<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DBA Archives - The SERO Group</title>
	<atom:link href="https://theserogroup.com/category/dba/feed/" rel="self" type="application/rss+xml" />
	<link>https://theserogroup.com/category/dba/</link>
	<description>SQL Servers Healthy, Secure, And Reliable</description>
	<lastBuildDate>Tue, 03 Feb 2026 22:10:12 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://theserogroup.com/wp-content/uploads/2024/07/cropped-Canister-only-1-32x32.png</url>
	<title>DBA Archives - The SERO Group</title>
	<link>https://theserogroup.com/category/dba/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">121220030</site>	<item>
		<title>The Accidental DBA Retirement Crisis: Is Your Institution Ready?</title>
		<link>https://theserogroup.com/dba/the-accidental-dba-retirement-crisis-is-your-institution-ready/</link>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Wed, 04 Feb 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[IT Manager]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=7729</guid>

					<description><![CDATA[<p>Let me paint a picture you&#8217;ve probably seen before. Your network administrator, Tom, has been managing your SQL Server databases for the past 15 years. It wasn&#8217;t his original job, but someone had to do it. Over time, Tom became the only person who really knows how everything works. He knows which maintenance jobs run&#8230; <br /> <a class="read-more" href="https://theserogroup.com/dba/the-accidental-dba-retirement-crisis-is-your-institution-ready/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/dba/the-accidental-dba-retirement-crisis-is-your-institution-ready/">The Accidental DBA Retirement Crisis: Is Your Institution Ready?</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Let me paint a picture you&#8217;ve probably seen before. Your network administrator, Tom, has been managing your SQL Server databases for the past 15 years. It wasn&#8217;t his original job, but someone had to do it. Over time, Tom became the only person who really knows how everything works. He knows which maintenance jobs run when, why that one server is configured differently, and exactly how to restore from backup when things go sideways.</p>



<p>When someone has a question about the SQL Server, it&#8217;s always &#8220;Go see Tom.&#8221;</p>



<p>Tom just gave his two-week notice. He&#8217;s retiring to the sandy beaches of Florida to soak in the rays and fish in the blue waters.</p>



<p>You&#8217;re happy for Tom. But now what? It&#8217;s a bit late to begin thinking about SQL Server succession planning.</p>



<h3 class="wp-block-heading">The Knowledge That Walks Out the Door</h3>



<p>I&#8217;ve talked to many bank CIOs who have a &#8220;Tom&#8221; on their team. He&#8217;s no SQL expert, but he&#8217;s the in-house SQL go-to guy, and he knows those systems. </p>



<p>And that can be a scary place to be if you&#8217;re the CIO responsible for the environment.</p>



<p>Why?</p>



<p>Here&#8217;s what typically leaves with an accidental DBA:</p>



<ul class="wp-block-list">
<li><strong>Undocumented configurations.</strong> Why is the production server set up that way? Tom knows. Or rather, Tom <em>knew</em>.</li>



<li><strong>Tribal knowledge about recurring issues.</strong> That quirky behavior every third Tuesday? Tom had a workaround. It&#8217;s not written down anywhere.</li>



<li><strong>Recovery procedures.</strong> Sure, you have backups. But does anyone else know the exact steps Tom follows when a restore is needed at 2 AM?</li>



<li><strong>Vendor relationships and escalation paths.</strong> Tom knew exactly who to call and what to say to get things fixed quickly.</li>



<li><strong>Security and access decisions.</strong> Why does that service account have those specific permissions? Good question.</li>
</ul>



<h3 class="wp-block-heading" id="h-why-this-matters-more-in-highly-regulated-industries">Why This Matters More in Highly Regulated Industries</h3>



<p>If you&#8217;re a community bank, this scenario isn&#8217;t just inconvenient; it&#8217;s an examiner finding waiting to happen. If you&#8217;re in healthcare, regulatory stakes are just as high.</p>



<p>During IT examinations, auditors specifically look for single points of failure in critical systems. If your answer to &#8216;Who manages your databases?&#8217; is one person&#8217;s name, that&#8217;s a control weakness. If your answer to &#8216;What happens if they&#8217;re unavailable?&#8217; is &#8216;We&#8217;d figure it out,&#8217; that&#8217;s a finding.</p>



<p>In these industries, auditors expect you to have:</p>



<ul class="wp-block-list">
<li>Documented procedures for critical operations.</li>



<li>Separation of duties for database management.</li>



<li>Continuity plans that don&#8217;t depend on one person.</li>



<li>Evidence that someone is actually monitoring your databases.</li>
</ul>



<p>When Tom retires and you can&#8217;t answer basic questions about your SQL Server environment, you&#8217;ve got a problem. A problem that shows up in your next IT audit. Or worse, a technical issue that you cannot resolve. </p>



<h3 class="wp-block-heading">The Full-Time DBA Trap</h3>



<p>Your first instinct might be to hire a replacement. This time, you&#8217;ll hire a <em>real</em> DBA, someone who can also help with network tasks when needed.</p>



<p>Makes sense. Kinda.</p>



<p>However, here&#8217;s the reality:</p>



<ul class="wp-block-list">
<li><strong>Really good DBAs are hard to find</strong> <strong>and are only getting harder to find.</strong> SQL Server DBAs work in a specialized niche. They&#8217;re not application developers or network administrators. As the number of companies running SQL Server has grown, the supply of experienced DBAs hasn&#8217;t kept pace. The talent gap is real.</li>



<li><strong>You can&#8217;t compete for talent.</strong> Full-time DBAs with SQL Server expertise command $100K to $150K in most markets. The bigger banks, healthcare companies, and other industries snap them up immediately.</li>



<li><strong>You don&#8217;t need 40 hours per week.</strong> Most community banks with 2 to 15 SQL Server instances need expert DBA attention, but not full-time. You&#8217;d be paying a full-time salary for a part-time need. Worse, eventually your DBA would get bored and leave.</li>



<li><strong>Two is one, and one is none.</strong> With a single DBA, how do you cover vacation, illness, or parental leave? And when that person leaves in a few years, you&#8217;re back to square one. The succession planning problem doesn&#8217;t go away. It just resets.</li>
</ul>



<h3 class="wp-block-heading">A Better Approach: Building Institutional Knowledge</h3>



<p>Instead of replacing one person with another person, forward-thinking institutions are replacing <em>person-dependent processes</em> with <em>documented, repeatable systems</em>.</p>



<p>Here&#8217;s what that looks like:</p>



<ol class="wp-block-list">
<li><strong>Start with a comprehensive assessment.</strong> You can&#8217;t document what you don&#8217;t know. Review your entire SQL Server environment, configurations, maintenance plans, and security posture. Get outside help if needed. </li>



<li><strong>Document everything.</strong> Create professional documentation that anyone with database knowledge can follow: configuration standards, maintenance procedures, recovery processes, escalation paths, everything. </li>



<li><strong>Implement consistent monitoring.</strong> Stop depending on someone noticing when things go wrong. Or worse, when your phone rings. Professional monitoring catches issues before they become emergencies.</li>



<li><strong>Create a knowledge transfer plan.</strong> Whether you&#8217;re bringing on a DBA Services team, such as our SEROShield services, or developing internal capability, make sure the knowledge gets captured and shared.</li>



<li><strong>Test your procedures.</strong> Documentation that sits on a shelf isn&#8217;t helpful. Regular testing proves your team can actually execute when needed.</li>
</ol>



<p>This institutional approach is exactly what managed database services providers deliver.</p>



<h3 class="wp-block-heading" id="h-the-managed-database-services-provider-alternative">The Managed Database Services Provider Alternative</h3>



<p>More community banks are solving the accidental DBA and succession planning problem by moving to a DBA services model. Instead of one person holding all the knowledge, you get:</p>



<ul class="wp-block-list">
<li>A team of experts who share institutional knowledge</li>



<li>Documented procedures that survive personnel changes</li>



<li>Predictable monthly costs instead of salary + benefits</li>



<li>Professional monitoring and proactive maintenance</li>



<li>Built-in redundancy and coverage</li>



<li>Separation of duties that align with auditor expectations</li>



<li>Examiner-ready documentation</li>
</ul>



<p>If and when someone on the DBA team moves on, the knowledge stays with the firm. Your bank&#8217;s operational continuity doesn&#8217;t depend on any single person. In our case, each client has a primary and secondary DBA, along with documentation.</p>



<h2 class="wp-block-heading">Start Before the Crisis</h2>



<p>The accidental DBA model worked fine 15 years ago. But as regulatory expectations have increased and technical complexity has grown, it&#8217;s become a business risk you can&#8217;t afford.</p>



<p>Don&#8217;t wait until Tom is packing his office to figure out what he actually did all day. The time to address succession planning is <em>before</em> Tom gives notice. Once he&#8217;s gone, you&#8217;re in crisis mode, making rushed decisions under pressure.</p>



<h3 class="wp-block-heading" id="h-ready-to-assess-your-database-succession-risk">Ready to Assess Your Database Succession Risk?</h3>



<p>Our SQL Server Health Check documents your current environment, identifies knowledge gaps, and provides a roadmap for building institutional resilience, all before your version of Tom gives notice. <a href="https://theserogroup.com/contact-us/" target="_blank" rel="noreferrer noopener">Schedule a short, free call</a> with us to discuss your specific situation.</p>
<p>The post <a href="https://theserogroup.com/dba/the-accidental-dba-retirement-crisis-is-your-institution-ready/">The Accidental DBA Retirement Crisis: Is Your Institution Ready?</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7729</post-id>	</item>
		<item>
		<title>Why Quiet Reflection Leads to Better IT Strategy Decisions</title>
		<link>https://theserogroup.com/azure/why-quiet-reflection-leads-to-better-it-strategy-decisions/</link>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Wed, 17 Dec 2025 13:00:04 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Data Security]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Professional Development]]></category>
		<category><![CDATA[SQL Community]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Consulting]]></category>
		<category><![CDATA[The Sero Group]]></category>
		<category><![CDATA[Clustering]]></category>
		<category><![CDATA[Clusters]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[Database Development]]></category>
		<category><![CDATA[IT Manager]]></category>
		<category><![CDATA[Microsoft Azure]]></category>
		<category><![CDATA[Public Speaking]]></category>
		<category><![CDATA[Script Library]]></category>
		<category><![CDATA[Sero]]></category>
		<category><![CDATA[Sero Group]]></category>
		<category><![CDATA[Serogroup]]></category>
		<category><![CDATA[Shared Disks]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Assessment]]></category>
		<category><![CDATA[SQL Audit]]></category>
		<category><![CDATA[SQL Conference]]></category>
		<category><![CDATA[SQL Consultant]]></category>
		<category><![CDATA[SQL Events]]></category>
		<category><![CDATA[SQL Security]]></category>
		<category><![CDATA[SQL Server Consultant]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<category><![CDATA[SQL Training]]></category>
		<category><![CDATA[TempDB]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=7691</guid>

					<description><![CDATA[<p>Last Saturday, I woke up before dawn to a quiet house. My family was still asleep, as I’m the only morning person in our household. The Christmas tree lights cast a warm glow across the room, and I was alone with my thoughts and a hot cup of coffee. No urgent emails, no fire drills,&#8230; <br /> <a class="read-more" href="https://theserogroup.com/azure/why-quiet-reflection-leads-to-better-it-strategy-decisions/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/azure/why-quiet-reflection-leads-to-better-it-strategy-decisions/">Why Quiet Reflection Leads to Better IT Strategy Decisions</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Last Saturday, I woke up before dawn to a quiet house. My family was still asleep, as I’m the only morning person in our household. The Christmas tree lights cast a warm glow across the room, and I was alone with my thoughts and a hot cup of coffee. No urgent emails, no fire drills, no meetings starting in five minutes. Just space to think.</p>



<p>As I sat there, I ended up reflecting back on 2025. I found myself gravitating to these three questions:</p>



<ul class="wp-block-list">
<li>What went well this year?</li>



<li>What did I learn?</li>



<li>What should I focus on next year?</li>
</ul>



<p>If you’re a leader, I’m guessing you rarely get this kind of thinking time during your workday. I know I don’t. Our calendars are packed with calls, team meetings, and those &#8220;quick questions” that turn into two-hour troubleshooting sessions.</p>



<p>But here&#8217;s what I&#8217;ve learned: <strong>the quality of your strategic decisions is directly tied to the quality of your thinking time.</strong></p>



<p>And thinking time doesn&#8217;t happen by accident. You have to protect it.</p>



<h3 class="wp-block-heading" id="h-what-went-well-this-year">What Went Well This Year?</h3>



<p>When I asked myself this question, I didn&#8217;t think about our biggest projects or flashiest achievements. I didn&#8217;t think about when we migrated almost 2,000 databases as part of an upgrade project. Or the performance tuning we did that resulted in a $36,000 reduction in annual Azure spend for a client. </p>



<p>Instead, I thought about the relationships we strengthened. The trust we built with clients. The problems we solved before they became crises.</p>



<p>For you, this might look like:</p>



<ul class="wp-block-list">
<li>The audit that went smoothly because your security documentation was solid</li>



<li>The successful disaster recovery test that was possible because you kept refining the process</li>



<li>The team member you mentored who&#8217;s now ready for more responsibility</li>



<li>The support resources you provided your team through a trusted partner</li>
</ul>



<p>These aren&#8217;t always the things that make it into board reports. But they&#8217;re the foundation that everything else is built on.</p>



<h3 class="wp-block-heading" id="h-what-did-i-learn">What Did I Learn?</h3>



<p>This year reminded me of something Eisenhower once said: <strong>&#8220;Plans are worthless, but planning is everything.&#8221;</strong></p>



<p>The need for planning cannot be overstated. It&#8217;s critical. Even if the plan doesn&#8217;t always work out the way you intended. </p>



<p><strong>The plan itself wasn&#8217;t the point. The thinking I did while creating the plan was the point.</strong></p>



<p>Because I’d thought through our capacity, our ideal client profile, and our service delivery model, I could adjust quickly when reality didn’t match my spreadsheet. I knew which opportunities were a good fit for us and which ones to let go. Because we’ve intentionally built a small but incredibly talented team that genuinely wants to see our clients succeed, we were able to identify and create ways to help them.</p>



<p>I watched the same dynamic play out with clients. The institutions that had documented their SQL Server environments, tested their disaster recovery plans, and mapped their compliance requirements adapted quickly when needed. They were positioned for success even when the unexpected happened.</p>



<p>Planning isn&#8217;t about predicting the future. It&#8217;s about <strong>building the muscle memory to respond when the future surprises you.</strong></p>



<p>What did you learn this year about planning and adapting? Maybe it was:</p>



<ul class="wp-block-list">
<li>That your three-year technology roadmap needs quarterly reviews, not just annual ones</li>



<li>That the disaster recovery plan sitting in a SharePoint folder isn&#8217;t the same as a tested DR plan</li>



<li>That &#8220;we&#8217;ll address that next quarter&#8221; eventually becomes &#8220;why didn&#8217;t we address this sooner?&#8221;</li>



<li>That having an expert on call beats having a plan to find an expert when something breaks</li>
</ul>



<p>These lessons matter. Write them down. They&#8217;re not just hindsight—they&#8217;re your blueprint for better decisions ahead.</p>



<h3 class="wp-block-heading" id="h-what-should-i-focus-on-next-year">What Should I Focus On Next Year?</h3>



<p>For me, the answer was clear: <strong>I need to help more financial institutions and healthcare organizations understand that they have options.</strong> Most CIOs think they have two choices for database management: hire a full-time DBA (expensive and hard to find) or make do with whoever can &#8220;figure it out&#8221; (risky and unsustainable).</p>



<p>There&#8217;s a third option: fractional DBA services that give you expert oversight without the full-time price tag. </p>



<p>For you, your focus might be different. Maybe it&#8217;s:</p>



<ul class="wp-block-list">
<li>Finally getting your SQL Server environment documented and audit-ready</li>



<li>Building a disaster recovery plan that you&#8217;ve actually tested</li>



<li>Move a little further along the <a href="https://theserogroup.com/data-strategy/sql-server-maturity-curve-how-banks-move-from-reactive-risk-to-strategic-advantage/">SQL Server Maturity Curve</a></li>



<li>Finding a partner who understands banking compliance, not just databases</li>
</ul>



<p>Whatever it is, the key is to actually choose something. Not everything. Something. And move toward it. Make progress.</p>



<h3 class="wp-block-heading" id="h-the-power-of-quiet-reflection">The Power of Quiet Reflection</h3>



<p>Here&#8217;s the thing about those early Saturday morning moments: they&#8217;re rare. And precious. </p>



<p>During the week, we’re in execution mode. We’re responding, reacting, solving, and fixing. That’s necessary work. But it’s not strategic work.</p>



<p>Strategic work requires space. It requires stepping back from the urgent to focus on the important.</p>



<p>So, here&#8217;s my challenge to you as we wind down 2025 and usher in the new year:</p>



<h3 class="wp-block-heading" id="h-block-off-time-just-to-think-then-protect-it">Block Off Time Just to Think, Then Protect It</h3>



<p>Maybe it&#8217;s Saturday mornings before your family wakes up. Maybe it&#8217;s a long walk at lunch. Maybe it&#8217;s 90 minutes with your calendar blocked and your office door closed. </p>



<p>Whatever it is, protect it. The decisions you make during that quiet time about where to focus, what risks to address, and which partnerships to invest in will help shape your entire year.</p>



<h3 class="wp-block-heading" id="h-your-turn">Your Turn</h3>



<p>As you think about the year ahead, I&#8217;d encourage you to ask yourself those three questions:</p>



<ol class="wp-block-list">
<li>What went well this year? Celebrate it. Learn from it.</li>



<li>What did I learn? Write it down. It&#8217;s wisdom you paid for.</li>



<li>What should I focus on next year? Pick one or two things. Not everything.</li>
</ol>



<p>And if one of those focus areas is &#8220;finally get our SQL Server environment to a place where I&#8217;m confident, not just hopeful,&#8221; let&#8217;s talk. That&#8217;s exactly what we help institutions do.</p>



<p>If you&#8217;re a CIO wondering whether your SQL Server environment is as healthy and secure as it should be, I&#8217;d be happy to have a conversation. No sales pitch. Just two people talking candidly about database management. <a href="https://theserogroup.com/contact-us/" target="_blank" rel="noreferrer noopener">Schedule a time here</a>.</p>
<p>The post <a href="https://theserogroup.com/azure/why-quiet-reflection-leads-to-better-it-strategy-decisions/">Why Quiet Reflection Leads to Better IT Strategy Decisions</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7691</post-id>	</item>
		<item>
		<title>4 Key Performance Benefits of Enabling Query Store</title>
		<link>https://theserogroup.com/dba/4-key-performance-benefits-of-enabling-query-store/</link>
		
		<dc:creator><![CDATA[Lee Markum]]></dc:creator>
		<pubDate>Wed, 15 Oct 2025 12:00:00 +0000</pubDate>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[Database Development]]></category>
		<category><![CDATA[IT Manager]]></category>
		<category><![CDATA[Query Store]]></category>
		<category><![CDATA[Script Library]]></category>
		<category><![CDATA[Sero]]></category>
		<category><![CDATA[Sero Group]]></category>
		<category><![CDATA[Serogroup]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Consultant]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Consultant]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<category><![CDATA[The Sero Group]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=7565</guid>

					<description><![CDATA[<p>Query Store has been around since SQL Server 2016, but its full potential often goes untapped. Some companies were initially wary of it after some edge case problems arose during its initial rollout. However, since its initial release, Query Store has undergone numerous enhancements and is rapidly establishing itself as one of the most significant&#8230; <br /> <a class="read-more" href="https://theserogroup.com/dba/4-key-performance-benefits-of-enabling-query-store/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/dba/4-key-performance-benefits-of-enabling-query-store/">4 Key Performance Benefits of Enabling Query Store</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Query Store has been around since SQL Server 2016, but its full potential often goes untapped. Some companies were initially wary of it after some edge case problems arose during its initial rollout. However, since its initial release, Query Store has undergone numerous enhancements and is rapidly establishing itself as one of the most significant advancements in SQL Server, comparable to the SQL Server DMVs introduced in SQL Server 2005.</p>



<p>What are the benefits of enabling Query Store? While there are many technical reasons, here are my top four broad advantages to consider.</p>



<h3 class="wp-block-heading" id="h-1-free-sql-server-monitoring">1. Free SQL Server monitoring</h3>



<p>Your business has already paid for Query Store in the SQL Server licensing. With SQL Server 2016 and later, it is accessible at the database level. This means that for smaller shops that may not have a large enterprise environment, you don&#8217;t have to spend large sums of money to get observability from 3rd party software. Query Store&#8217;s native capture mechanisms can provide significant insight into your SQL Server&#8217;s performance, all without costing you any more money!</p>



<h3 class="wp-block-heading" id="h-2-capture-foundational-sql-server-performance-indicators">2. Capture foundational SQL Server performance indicators</h3>



<p>Query Store collects the data already present in your SQL Server, displaying it in easy-to-understand graphs and reports. With Query Store, values for CPU, memory, duration, and more can be viewed based on MAX/AVG/STD Deviation metrics per query. This provides valuable insights into core metrics that shape the performance of your applications. Furthermore, this data allows your company to see not only how specific queries behaved when there was a performance problem but also to trend those queries over time to see shifts in performance.</p>



<p>SQL Server wait statistics are also captured and displayed in Query Store. When a query needs a resource, like CPU, or data read from disk, then a wait type is assigned to the query. These various waits affect query performance in a multitude of ways, and Query Store surfaces those performance-impacting waits for you. For example, the Query Wait Statistics report may show large bar graphs for BUFFER IO and CPU. Queries appearing in both graphs may be suffering from large table scans because of missing indexes.</p>



<p>Additionally, Query Store captures the query plans associated with queries. Think of query plans as the blueprint for how the query will be executed. These plans contain data about the decisions SQL Server is making about your data and how to process it. Some decisions revealed in the query plan can pinpoint performance issues. For example, query plans that regularly contain table scan operators may indicate missing indexes that force SQL Server to scan millions of rows when it only needs to retrieve a few thousand rows.</p>



<h3 class="wp-block-heading" id="h-3-talk-to-your-vendors-with-data-in-hand">3. Talk to your vendors with data in hand</h3>



<p>COTS vendors need to see hard data when approached with a performance problem. Query Store can provide that data. Without it, you can report a problem, but the software vendor is unlikely to consider making changes.</p>



<p>If you engage a DBA as a Service company, having performance data in hand will go a long way toward building a good relationship with that vendor. They will see your preparedness and be drawn to that. Also, it will allow them to solve your problem faster, and isn&#8217;t that what you really want anyway?</p>



<h3 class="wp-block-heading" id="h-4-allow-your-applications-to-take-advantage-of-new-performance-features">4. Allow your applications to take advantage of new performance features</h3>



<p>Newer versions of SQL Server have a collection of features known as Intelligent Query Processing (IQP). Features such as memory grant feedback, degree of parallelism feedback, and more are tied into IQP. These features depend on Query Store. Without Query Store running and without using the appropriate database compatibility level, your applications are missing out on performance-enhancing features that make queries execute faster, use fewer resources, or do both at the same time.</p>



<h3 class="wp-block-heading" id="h-want-to-work-with-the-sero-group">Want to work with The SERO Group?</h3>



<p>Want to learn more about how The SERO Group helps organizations take the guesswork out of managing their SQL Servers? <a href="https://theserogroup.com/contact-us/" target="_blank" rel="noreferrer noopener">Schedule a no-obligation discovery call</a>&nbsp;with us to get started.</p>
<p>The post <a href="https://theserogroup.com/dba/4-key-performance-benefits-of-enabling-query-store/">4 Key Performance Benefits of Enabling Query Store</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7565</post-id>	</item>
		<item>
		<title>How We Migrated 1,200+ SQL Server Databases in Under 3 Hours (While Cutting Storage Costs by 84%)</title>
		<link>https://theserogroup.com/dba/how-we-migrated-1200-sql-server-databases-in-under-3-hours-while-cutting-storage-costs-by-84/</link>
					<comments>https://theserogroup.com/dba/how-we-migrated-1200-sql-server-databases-in-under-3-hours-while-cutting-storage-costs-by-84/#comments</comments>
		
		<dc:creator><![CDATA[Luke Campbell]]></dc:creator>
		<pubDate>Wed, 14 May 2025 12:00:00 +0000</pubDate>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Consultant]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Consultant]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=3646</guid>

					<description><![CDATA[<p>Editor’s Note: This is part one of a two-part series. In next week’s follow-up, we’ll cover the project management and coordination strategies that helped make this migration a success. What if you could retire two aging SQL Server 2016 failover clustered instances, migrate 1,200+ databases to SQL Server 2022, and slash storage spend by 84%—all&#8230; <br /> <a class="read-more" href="https://theserogroup.com/dba/how-we-migrated-1200-sql-server-databases-in-under-3-hours-while-cutting-storage-costs-by-84/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/dba/how-we-migrated-1200-sql-server-databases-in-under-3-hours-while-cutting-storage-costs-by-84/">How We Migrated 1,200+ SQL Server Databases in Under 3 Hours (While Cutting Storage Costs by 84%)</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><em><strong>Editor’s Note: </strong>This is part one of a two-part series. In next week’s follow-up, we’ll cover the project management and coordination strategies that helped make this migration a success.</em></p>



<p>What if you could retire two aging SQL Server 2016 failover clustered instances, migrate 1,200+ databases to SQL Server 2022, and slash storage spend by 84%—all in the length of a weekend maintenance window?</p>



<p>In this post, I&#8217;ll tell you exactly how we did it for a client using AWS.</p>



<p>We had multiple goals for this migration:</p>



<ul class="wp-block-list">
<li>Move to SQL Server 2022 and Windows Server 2022</li>



<li>Reduce Amazon AWS storage costs</li>



<li>Minimize the downtime required for the migration</li>
</ul>



<p>The environment consisted of two SQL Server 2016 Enterprise failover clustered instances hosting over 1,200 production databases. As you may know, mainstream support for SQL Server 2016 ended on July 13, 2021, with extended support ending on July 14, 2026 (which is approaching quickly). This post explains how we successfully migrated this complex environment with less than 3 hours of planned downtime while simultaneously reducing infrastructure costs by transforming their storage architecture and backup strategy.</p>



<p><strong>Key Results:</strong></p>



<ul class="wp-block-list">
<li>1,200+ databases migrated with minimal business disruption.</li>



<li>Infrastructure storage costs reduced by 84% (estimated).</li>



<li>SQL Server platform modernized from 2016 to 2022.</li>
</ul>



<h3 class="wp-block-heading">Client Profile</h3>



<p><strong>Industry</strong>: Education software</p>



<p><strong>Environment</strong>:</p>



<ul class="wp-block-list">
<li>Two SQL Server 2016 Enterprise failover clustered instances in Amazon AWS</li>



<li>FSx file share volumes for database storage</li>



<li>FSx file share for backups</li>



<li>Multi-subnet configuration</li>



<li>1,200+ production databases ranging from 1GB to 3TB in size</li>



<li>24/7 business operations with minimal tolerance for downtime</li>
</ul>



<h3 class="wp-block-heading">The Challenge</h3>



<h4 class="wp-block-heading" id="h-business-drivers">Business Drivers:</h4>



<p>The client approached us with several business requirements:</p>



<p><strong>Cost Reduction</strong>: Their existing FSx storage and backup architecture was consuming an unsustainable portion of their IT budget.</p>



<p><strong>Technology Modernization</strong>: SQL Server 2016 was approaching the end of extended support, requiring an upgrade path to maintain vendor support and security compliance.</p>



<p><strong>Minimal Disruption</strong>: With 1,200+ production databases supporting critical business functions, any migration solution needed to minimize downtime.</p>



<h4 class="wp-block-heading" id="h-technical-challenges">Technical Challenges:</h4>



<p>The technical landscape presented several significant obstacles:</p>



<h4 class="wp-block-heading" id="h-fsx-storage-cost-and-performance">FSx Storage Cost and Performance</h4>



<p>The client&#8217;s reliance on Amazon FSx for Windows File Server provided the necessary shared storage functionality for their SQL Server failover clusters, but at a premium price point. The FSx architecture also introduced additional network latency for I/O operations, affecting database performance.</p>



<h4 class="wp-block-heading">Complex Multi-Subnet Configuration</h4>



<p>The existing environment leveraged a multi-subnet configuration, adding complexity to any potential migration solution.</p>



<h4 class="wp-block-heading">Database Scale and Diversity</h4>



<p>With over 1,200 databases that vary dramatically in size, usage patterns, and business criticality, a one-size-fits-all migration approach would be insufficient.</p>



<h4 class="wp-block-heading">Backup Architecture Limitations</h4>



<p>The existing backup strategy relied on additional FSx storage, increasing the storage costs while creating management overhead.</p>



<h4 class="wp-block-heading">Strict Downtime Constraints</h4>



<p>The business could tolerate a maximum of 8 hours of downtime, with a strong preference for staying under 4 hours to minimize impact on operations.</p>



<h3 class="wp-block-heading">The Solution</h3>



<p>After a comprehensive analysis and planning, we designed a phased approach that would transform the client&#8217;s database infrastructure while meeting their strict requirements for minimal disruption.</p>



<h4 class="wp-block-heading">Solution Architecture</h4>



<p>We architected a modern SQL Server environment on AWS with the following components:</p>



<ol class="wp-block-list">
<li><strong>Platform Upgrade:</strong> 
<ul class="wp-block-list">
<li>SQL Server 2022 Enterprise Edition</li>



<li>Leveraged latest features and extended support lifecycle</li>
</ul>
</li>



<li><strong>Storage Transformation:</strong> 
<ul class="wp-block-list">
<li>From FSx file shares to Multi-Attached EBS volumes</li>



<li>io2 Block Express volumes for critical data files</li>



<li>Optimized configuration for SQL Server workloads</li>
</ul>
</li>



<li><strong>Backup Modernization: </strong>
<ul class="wp-block-list">
<li>Implement S3-based backup strategy
<ul class="wp-block-list">
<li>Direct SQL Server native backup to S3</li>
</ul>
</li>



<li>Intelligent lifecycle policies for cost-effective long-term retention</li>



<li>Elimination of dedicated backup storage infrastructure</li>
</ul>
</li>



<li><strong>High Availability Design: </strong>
<ul class="wp-block-list">
<li>SQL Server 2022 FCI</li>



<li>Modern monitoring integration</li>
</ul>
</li>
</ol>



<h3 class="wp-block-heading">Implementation Approach</h3>



<p>We divided the implementation into distinct phases to manage risk and ensure successful outcomes.</p>



<h4 class="wp-block-heading">Phase 1: Development Environment Migration</h4>



<p>We began with the client&#8217;s development environment to validate our approach and identify potential issues. We worked with the client’s internal system admins to complete the EC2 instance and Windows Server Failover Cluster builds. This allowed us to focus mainly on the SQL Server FCI components:</p>



<ol class="wp-block-list">
<li><strong>Infrastructure Provisioning:</strong>
<ul class="wp-block-list">
<li>Deployed new EC2 instances optimized for SQL Server 2022</li>



<li>Configured multi-attached EBS volumes</li>



<li>Established networking and security configurations</li>
</ul>
</li>



<li><strong>Initial Testing:</strong>
<ul class="wp-block-list">
<li>Validated storage performance</li>



<li>Confirmed failover functionality and timing</li>



<li>Verified backup and restore operations to S3</li>
</ul>
</li>



<li><strong>Migration Dry Run:</strong>
<ul class="wp-block-list">
<li>Executed migration process on a subset of development databases</li>



<li>Measured migration times</li>



<li>Refined automation scripts based on observations</li>
</ul>
</li>
</ol>



<h4 class="wp-block-heading">Phase 2: Production Environment Preparation</h4>



<p>With lessons from the development migration incorporated, we prepared for the production migration:</p>



<ol class="wp-block-list">
<li><strong>Pre-Migration Activities:</strong>
<ul class="wp-block-list">
<li>Comprehensive database inventory and dependency mapping (i.e., agent jobs, applications, etc.)
<ul class="wp-block-list">
<li>Planning, communication, and task tracking were crucial to the overall success of the migration.</li>
</ul>
</li>



<li>Database health checks to identify potential migration blockers
<ul class="wp-block-list">
<li>Including utilizing Microsoft&#8217;s Data Migration Assistant to ensure database compatibility</li>
</ul>
</li>



<li>Implementation of enhanced monitoring</li>
</ul>
</li>



<li><strong>Automation Development:</strong>
<ul class="wp-block-list">
<li>Custom PowerShell script creation for orchestrating the migration</li>



<li>Integration with DBATOOLS for database backup and restore operations</li>
</ul>
</li>



<li><strong>Infrastructure Deployment:</strong>
<ul class="wp-block-list">
<li>Production SQL Server 2022 cluster provisioning</li>



<li>Multi-attached storage configuration and testing</li>



<li>S3 bucket preparation with appropriate security and lifecycle policies</li>



<li>Tested access to the current backup location from the new SQL Server 2022 instances (permissions and network access)</li>
</ul>
</li>
</ol>



<h4 class="wp-block-heading">Phase 3: Production Migration Execution</h4>



<p>The production migration followed our carefully orchestrated plan:</p>



<ol class="wp-block-list">
<li><strong>Pre-Stage Initial Data:</strong>
<ul class="wp-block-list">
<li>Performed initial data copy without taking systems offline</li>



<li>Utilized a combination of native Full, Differential, and Log backups</li>



<li>Leveraged the rebuilt PowerShell script to perform the initial full restore and differential restore</li>



<li>Restored log backups every 30 minutes</li>



<li>Scheduled restores via the SQL Server Agent on the new SQL Server 2022 FCIs</li>



<li>Established baseline synchronization to minimize final transfer time.</li>
</ul>
</li>



<li><strong>Migration Window Execution:</strong>
<ul class="wp-block-list">
<li>Implemented application maintenance mode at the start of the maintenance window, blocking access</li>



<li>Executed the final data synchronization using our custom migration script
<ul class="wp-block-list">
<li>Tail-log backup was used to capture all transactions and place the database on the SQL Server 2016 instances into “recovering” status
<ul class="wp-block-list">
<li>This accomplished two important goals:
<ul class="wp-block-list">
<li>Capture all transactions that have occurred since the last transaction log backup</li>



<li>Place the database into a &#8220;recovering&#8221; state so that new connections were not allowed in the old environment</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>



<li>Performed database restores on the new SQL Server 2022 instances using all transaction log backups, including the final tail-log backup
<ul class="wp-block-list">
<li>Databases were then recovered and placed into a multi-user read-write state</li>
</ul>
</li>



<li>Raised the database compatibility level to 160</li>



<li>Changed the database owner</li>



<li>Validated each database post-migration</li>



<li>Initiated post-migration full backups</li>
</ul>
</li>



<li><strong>Cutover:</strong>
<ul class="wp-block-list">
<li>Updated connection strings and DNS entries</li>



<li>Performed final validation testing</li>



<li>Opened systems for production use</li>
</ul>
</li>
</ol>



<h3 class="wp-block-heading">The Technology</h3>



<h4 class="wp-block-heading">Multi-Attached Storage Architecture</h4>



<p>The shift from FSX to multi-attached EBS volumes represented one of the most significant technical innovations in this project. We configured the volumes with performance characteristics matched to their specific workloads:</p>



<ul class="wp-block-list">
<li>Data volumes: 3,000 IOPS</li>



<li>Log volumes: 3,000 IOPs</li>



<li>TempDB volumes: Amazon EC2 instance store volume (local to each EC2 instance)</li>
</ul>



<p>This approach delivered both performance improvements and significant cost savings compared to the FSx solution.</p>



<h4 class="wp-block-heading">Custom Migration Automation</h4>



<p>The scale of this migration—over 1,200 databases—demanded sophisticated automation. We developed a custom PowerShell script that utilized multiple commandlets from the DBATools module.</p>



<h4 class="wp-block-heading" id="h-dbatools-integration">DBATools Integration</h4>



<p>While our custom script orchestrated the overall migration process, we leveraged the power of <a href="https://dbatools.io/">DBATools—an open-source PowerShell module for SQL Server management</a>—for many of the core database operations. This combination of custom automation with proven community tools provided the perfect balance of flexibility and reliability.</p>



<p>Key DBATools functions employed included:</p>



<ul class="wp-block-list">
<li><strong>Get-DBABackupHistory</strong> to retrieve the latest backup information for each database.</li>



<li><strong>Restore-DbaDatabase </strong>for restoring the initial full, differential, and all t-log backups.</li>
</ul>



<h3 class="wp-block-heading">The Results</h3>



<p>The migration was completed successfully with impressive metrics:</p>



<h4 class="wp-block-heading" id="h-cost-reduction">Cost Reduction</h4>



<ul class="wp-block-list">
<li>84% reduction in monthly storage costs</li>
</ul>



<h4 class="wp-block-heading" id="h-business-impact">Business Impact</h4>



<ul class="wp-block-list">
<li><strong>Minimal disruption: </strong>Total downtime of only 2 hours and 55 minutes, well under the 8-hour target</li>



<li><strong>Extended support lifecycle: </strong>Movement to SQL Server 2022 provides support through 2032</li>



<li><strong>Performance headroom for growth: </strong>New infrastructure accommodates projected 55% database growth</li>
</ul>



<h4 class="wp-block-heading" id="h-migration-metrics">Migration Metrics</h4>



<ul class="wp-block-list">
<li><strong>Total databases migrated: </strong>1,235</li>
</ul>



<h3 class="wp-block-heading" id="h-key-lessons-learned">Key Lessons Learned</h3>



<p>Throughout this project, we gained valuable insights that would benefit any organization undertaking a similar database migration:</p>



<ol class="wp-block-list">
<li><strong>Thorough database inventory is critical</strong>
<ul class="wp-block-list">
<li>Understanding dependencies between databases was crucial</li>



<li>Early identification of current database sizes allowed for proper allocation of storage to support the migration.</li>
</ul>
</li>



<li><strong>Storage strategy has an outsized impact</strong>
<ul class="wp-block-list">
<li>Moving to multi-attached EBS volumes delivered both cost and performance benefits</li>



<li>SQL Server 2022 introduced the ability to backup directly to S3, delivering significant storage savings vs. FSx</li>
</ul>
</li>



<li><strong>Automation is non-negotiable at scale</strong>
<ul class="wp-block-list">
<li>Manual migration for 1,200+ databases not possible within time constraints</li>



<li>Investment in custom automation paid dividends in reliability and speed</li>
</ul>
</li>



<li><strong>Pre-staging reduces risk</strong>
<ul class="wp-block-list">
<li>Copying the bulk of data before the migration window dramatically reduced the final migration time</li>



<li>Delta synchronization proved highly efficient using t-log backups</li>
</ul>
</li>



<li><strong>Multi-phase approach validates methodology</strong>
<ul class="wp-block-list">
<li>Starting with the development environment allowed refinement of techniques</li>



<li>Lessons learned in initial phases improved production migration execution</li>
</ul>
</li>
</ol>



<h3 class="wp-block-heading" id="h-conclusion">Conclusion</h3>



<p>This post demonstrates how even the most challenging database migrations can be accomplished with minimal downtime when approached with careful planning, appropriate technology choices, and custom automation. By transforming the storage architecture and leveraging modern AWS services, we not only successfully migrated 1,200+ SQL Server databases but also delivered substantial cost savings and performance improvements.</p>



<p>For organizations facing similar challenges with aging SQL Server environments, this project provides a proven blueprint for success—combining the best of cloud infrastructure, modern database platforms, and sophisticated automation techniques.</p>



<p>The client now enjoys a modern, cost-effective SQL Server environment that provides room for growth while reducing ongoing operational costs. <strong>Most importantly, they achieved this transformation with minimal disruption to their business operations—proving that with the right approach, large-scale database migrations don&#8217;t have to be painful or disruptive.</strong></p>



<h3 class="wp-block-heading" id="h-want-to-work-with-the-sero-group">Want to work with The SERO Group?</h3>



<p>Want to learn more about how The SERO Group helps organizations take the guesswork out of managing their SQL Servers? <a href="https://theserogroup.com/contact-us/" target="_blank" rel="noreferrer noopener">Schedule a no-obligation discovery call</a>&nbsp;with us to get started.</p>
<p>The post <a href="https://theserogroup.com/dba/how-we-migrated-1200-sql-server-databases-in-under-3-hours-while-cutting-storage-costs-by-84/">How We Migrated 1,200+ SQL Server Databases in Under 3 Hours (While Cutting Storage Costs by 84%)</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://theserogroup.com/dba/how-we-migrated-1200-sql-server-databases-in-under-3-hours-while-cutting-storage-costs-by-84/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3646</post-id>	</item>
		<item>
		<title>The True Costs of Database Downtime—and Why Modernization Can’t Wait</title>
		<link>https://theserogroup.com/dba/the-true-costs-of-database-downtime-and-why-modernization-cant-wait/</link>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Wed, 19 Feb 2025 13:00:19 +0000</pubDate>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[IT Manager]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=7077</guid>

					<description><![CDATA[<p>How to Build a Business Case for Modernization In today’s always-on business environment, database downtime isn’t just an inconvenience—it’s a direct hit to revenue, productivity, and customer trust. Despite this, many organizations delay modernization efforts due to perceived costs and complexity. However, the real question is: can your business afford not to modernize? Read on&#8230; <br /> <a class="read-more" href="https://theserogroup.com/dba/the-true-costs-of-database-downtime-and-why-modernization-cant-wait/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/dba/the-true-costs-of-database-downtime-and-why-modernization-cant-wait/">The True Costs of Database Downtime—and Why Modernization Can’t Wait</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading" id="h-how-to-build-a-business-case-for-modernization">How to Build a Business Case for Modernization</h2>



<p>In today’s always-on business environment, database downtime isn’t just an inconvenience—it’s a direct hit to revenue, productivity, and customer trust. Despite this, many organizations delay modernization efforts due to perceived costs and complexity. However, the real question is: can your business afford <strong><em>not</em></strong> to modernize?</p>



<p>Read on to learn more about the financial and operational costs of database downtime as well as a clear framework to build a compelling business case for modernization.</p>



<h3 class="wp-block-heading" id="h-five-hidden-costs-of-database-downtime">Five Hidden Costs of Database Downtime</h3>



<p>When a database goes down, the impact ripples across the entire organization. Some of the most significant costs include:</p>



<h4 class="wp-block-heading" id="h-1-lost-revenue">1. Lost Revenue</h4>



<p>For companies reliant on digital transactions, every second of downtime translates to lost sales. Amazon, for example, once reported that a one-second slowdown could cost $1.6 billion annually. While your business might not operate at Amazon’s scale, even brief outages can lead to significant revenue loss.</p>



<h4 class="wp-block-heading" id="h-2-lost-productivity">2. Lost Productivity</h4>



<p>A database failure means employees can’t access critical systems, resulting in downtime that halts operations. Whether it’s finance teams unable to process invoices or customer service reps locked out of support portals, downtime disrupts workflows and reduces overall efficiency.</p>



<h4 class="wp-block-heading" id="h-3-damaged-customer-trust-and-brand-reputation">3. Damaged Customer Trust and Brand Reputation</h4>



<p>Today’s consumers expect 24/7 availability. If your database fails, customers may turn to competitors instead of waiting for service to resume. Worse yet, frequent outages can erode long-term trust, leading to customer churn and negative brand perception.</p>



<h4 class="wp-block-heading" id="h-4-regulatory-and-compliance-risks">4. Regulatory and Compliance Risks</h4>



<p>Many industries require strict uptime guarantees due to compliance regulations. Unexpected outages can result in hefty fines, legal liabilities, or audit failures, increasing both financial and reputational risks.</p>



<h4 class="wp-block-heading" id="h-5-emergency-recovery-costs">5. Emergency Recovery Costs</h4>



<p>Beyond lost revenue, the costs of emergency IT interventions can be staggering. Organizations often pay a premium for after-hours IT support, expedited cloud migrations, and patchwork fixes—all of which can add up quickly.</p>



<h3 class="wp-block-heading" id="h-how-to-make-the-case-for-modernization-in-five-steps">How to Make the Case for Modernization in Five Steps</h3>



<p>Given these risks, database modernization isn’t just a technical upgrade—it’s a strategic investment. Here’s how to build a strong business case for modernization:</p>



<h4 class="wp-block-heading" id="h-1-quantify-downtime-costs">1. Quantify Downtime Costs</h4>



<p>Start by making a rough calculation of your organization’s downtime costs using this formula:</p>



<pre class="wp-block-code"><code>&#91;(revenue per hour/operating hours) × downtime hours] + recovery costs + employee productivity loss + damage to customer trust + damage to reputation = total downtime cost</code></pre>



<p>Even conservative estimates often reveal that the cost of inaction outweighs the cost of modernization.</p>



<h4 class="wp-block-heading" id="h-2-highlight-competitive-advantages">2. Highlight Competitive Advantages</h4>



<p>Modernized databases offer improved scalability, enhanced security, and better performance. Faster access to real-time data can unlock competitive advantages, from personalized customer experiences to data-driven decision-making.</p>



<h4 class="wp-block-heading" id="h-3-emphasize-security-and-compliance-benefits">3. Emphasize Security and Compliance Benefits</h4>



<p>Outdated databases are vulnerable to cyber threats and compliance failures. Upgrading to a modern system strengthens security, reduces breach risks, and ensures regulatory compliance.</p>



<h4 class="wp-block-heading" id="h-4-include-cloud-and-automation-savings">4. Include Cloud and Automation Savings</h4>



<p>Modern cloud-based databases offer built-in redundancy, automated backups, and real-time monitoring, reducing the likelihood of costly outages. They also eliminate maintenance burdens, freeing up IT resources for more strategic initiatives.</p>



<h4 class="wp-block-heading" id="h-5-showcase-roi-and-long-term-savings">5. Showcase ROI and Long-Term Savings</h4>



<p>While modernization has upfront costs, the long-term benefits—fewer outages, lower maintenance costs, and better performance—lead to substantial ROI. By framing modernization as an investment rather than an expense, leadership is more likely to approve the initiative.</p>



<h3 class="wp-block-heading" id="h-take-the-next-step">Take the Next Step</h3>



<p>Database downtime is a preventable risk that businesses can no longer afford to ignore. By making a clear, data-driven case for modernization, IT leaders can secure executive buy-in and drive long-term resilience for their organizations.</p>



<p>Are you ready to evaluate your database infrastructure? <a href="https://theserogroup.com/contact-us/">Schedule a free, no-obligation discovery call</a> to learn how modernization can future-proof your business.</p>
<p>The post <a href="https://theserogroup.com/dba/the-true-costs-of-database-downtime-and-why-modernization-cant-wait/">The True Costs of Database Downtime—and Why Modernization Can’t Wait</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7077</post-id>	</item>
		<item>
		<title>10 Essential IT Audit Questions: The DBA&#8217;s Guide to SQL Server Compliance and Security in 2025</title>
		<link>https://theserogroup.com/dba/10-essential-questions-for-it-audits-in-2025/</link>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Thu, 02 Jan 2025 13:00:00 +0000</pubDate>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[IT Manager]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=6967</guid>

					<description><![CDATA[<p>As 2025 kicks off, organizations are eagerly setting new goals. For DBAs, a top priority might be preparing thoroughly for the next IT audit. Whether planned or unplanned, an audit can significantly impact how others perceive your IT department’s reliability. A seamless audit highlights strong governance and dependable systems, while missteps can reveal vulnerabilities and&#8230; <br /> <a class="read-more" href="https://theserogroup.com/dba/10-essential-questions-for-it-audits-in-2025/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/dba/10-essential-questions-for-it-audits-in-2025/">10 Essential IT Audit Questions: The DBA&#8217;s Guide to SQL Server Compliance and Security in 2025</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>As 2025 kicks off, organizations are eagerly setting new goals. For DBAs, a top priority might be preparing thoroughly for the next IT audit. Whether planned or unplanned, an audit can significantly impact how others perceive your IT department’s reliability. A seamless audit highlights strong governance and dependable systems, while missteps can reveal vulnerabilities and inefficiencies.</p>



<p>To start 2025 with confidence, focus on these ten critical questions auditors are certain to ask. Addressing them now not only ensures compliance but also strengthens the overall health of your SQL Server environment.</p>



<p><em>Need a refresher before diving in? <a href="https://theserogroup.com/data-security/audit-ready-sql-servers/">Explore our introduction to planning for audit-ready SQL Servers for helpful background information</a>.</em></p>



<h2 class="wp-block-heading" id="h-10-must-answer-questions-for-dbas-to-ace-it-audits-in-2025"><strong>10 Must-Answer Questions for DBAs to Ace IT Audits in 2025</strong></h2>



<ol start="1" class="wp-block-list">
<li><strong>What is your backup and recovery strategy?</strong> <br>Auditors expect proof that your data is protected and recoverable in case of failure or breach. Demonstrate recent, tested backups and maintain a clear, documented recovery plan.</li>



<li><strong>How do you manage access controls and permissions?</strong> <br>Auditors need to see a detailed, up-to-date record of who has access to what. Regularly review and limit unnecessary permissions to strengthen security and ensure compliance.</li>



<li><strong>Are there unpatched vulnerabilities in your SQL Server environment</strong>?<br>Outdated versions and unpatched servers raise immediate concerns. Consistently apply updates to minimize security risks and meet compliance requirements.</li>



<li><strong>How do you monitor database performance and availability?</strong><br>Be ready to provide performance logs and show how your monitoring tools prevent downtime and maintain operational stability.</li>



<li><strong>What disaster recovery plans are in place?</strong><br>Auditors look beyond backups for a comprehensive disaster recovery (DR) plan. This should include failover strategies and incident response protocols to cover all scenarios.</li>



<li><strong>Can you demonstrate data encryption practices?</strong><br>Encryption is essential. Show proof that sensitive data is encrypted both at rest and in transit, with documentation to back up these measures.</li>



<li><strong>How do you track and document changes to the database?</strong><br>Maintain thorough change management logs. These should capture schema changes, patches, and updates, reinforcing accountability and transparency.</li>



<li><strong>Are user activities within the database logged and monitored</strong>?<br>Audit logs tracking user activity are vital. They help identify suspicious behavior and demonstrate proactive risk management.</li>



<li><strong>What is your incident response plan?</strong><br>Prepare to explain how your team reports, manages, and resolves incidents. A clear, well-documented incident response plan reflects readiness and resilience.</li>



<li><strong>How do you handle data privacy and compliance regulations?</strong><br>As regulations like GDPR and CCPA evolve, auditors want evidence that your SQL Server environment aligns with current data privacy laws. Stay ahead by keeping documentation updated and accessible.</li>
</ol>



<h2 class="wp-block-heading" id="h-want-expert-help-to-prepare-for-your-next-audit">Want expert help to prepare for your next audit?</h2>



<p>The SERO Group specializes in helping organizations achieve audit readiness. <a href="https://theserogroup.com/contact-us/">Schedule your free, no-obligation discovery call today</a> to take the next step toward IT confidence in 2025.</p>
<p>The post <a href="https://theserogroup.com/dba/10-essential-questions-for-it-audits-in-2025/">10 Essential IT Audit Questions: The DBA&#8217;s Guide to SQL Server Compliance and Security in 2025</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6967</post-id>	</item>
		<item>
		<title>Schedule Preventative Maintenance for SQL Server: Key Steps to Protect Your Database</title>
		<link>https://theserogroup.com/dba/schedule-preventative-maintenance-for-sql-server-key-steps-to-protect-your-database/</link>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Wed, 04 Dec 2024 13:00:00 +0000</pubDate>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[IT Manager]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=6904</guid>

					<description><![CDATA[<p>&#8220;This SQL Server is critical. It&#8217;s used 24/7. So, we&#8217;re behind on patching, and we disabled our scheduled preventative maintenance jobs because they interfered with production. Our database is just too important to do that. We know that maintenance is important, but we just can&#8217;t.&#8221; Does that sound familiar? I hope not. It&#8217;s not a&#8230; <br /> <a class="read-more" href="https://theserogroup.com/dba/schedule-preventative-maintenance-for-sql-server-key-steps-to-protect-your-database/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/dba/schedule-preventative-maintenance-for-sql-server-key-steps-to-protect-your-database/">Schedule Preventative Maintenance for SQL Server: Key Steps to Protect Your Database</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>&#8220;This SQL Server is critical. It&#8217;s used 24/7. So, we&#8217;re behind on patching, and we disabled our scheduled preventative maintenance jobs because they interfered with production. Our database is just too important to do that. We know that maintenance is important, but we just can&#8217;t.&#8221;</p>



<p>Does that sound familiar? I hope not. It&#8217;s not a good place to be. Scheduled downtime is always better than unscheduled downtime.</p>



<p>So, what can you do about it?</p>



<h2 class="wp-block-heading" id="h-what-is-preventative-maintenance">What is preventative maintenance? </h2>



<p>So, what do we mean by &#8220;preventative maintenance?&#8221; </p>



<p>Broadly speaking, preventative maintenance can be thought of as a set of tasks that are performed regularly to keep that SQL Server and the databases it hosts healthy, secure, and reliable. These tasks help optimize performance, ensure data integrity, and prevent potential issues before they become disruptive events.</p>



<h2 class="wp-block-heading" id="h-examples-of-scheduled-preventative-maintenance">Examples of scheduled preventative maintenance</h2>



<p>Scheduled preventative maintenance frequently includes these tasks.</p>



<ul class="wp-block-list">
<li><strong>Index maintenance:</strong> Rebuilding or reorganizing indexes to reduce fragmentation and improve query performance
<ul class="wp-block-list">
<li>Example: <a href="https://learn.microsoft.com/en-us/sql/relational-databases/indexes/reorganize-and-rebuild-indexes?view=sql-server-ver16" target="_blank" rel="noreferrer noopener">Optimize index maintenance to improve query performance and reduce resource consumption</a></li>
</ul>
</li>



<li><strong>Statistics update:</strong> Updating database statistics to ensure the query optimizer makes efficient execution plans based on current data distribution
<ul class="wp-block-list">
<li>Example: <a href="https://learn.microsoft.com/en-us/sql/relational-databases/statistics/update-statistics?view=sql-server-ver16" target="_blank" rel="noreferrer noopener">Update Statistics</a></li>
</ul>
</li>



<li><strong>Backup (and restore tests):</strong> Performing regular database backups to safeguard data against potential corruption or accidental deletion
<ul class="wp-block-list">
<li>Examples: <a href="https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/backup-overview-sql-server?view=sql-server-ver16" target="_blank" rel="noreferrer noopener">Backup Overview</a> and <a href="https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/restore-and-recovery-overview-sql-server?view=sql-server-ver16" target="_blank" rel="noreferrer noopener">Restore and Recovery Overview</a></li>
</ul>
</li>



<li><strong>Database integrity checks:</strong> Running checks to identify any data inconsistencies or corruption
<ul class="wp-block-list">
<li>Example: <a href="https://learn.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver16" target="_blank" rel="noreferrer noopener">DBCC CheckDB</a></li>
</ul>
</li>



<li><strong>Monitoring and alerting:</strong> Setting up monitoring tools to identify potential problems early through performance metrics and alerts
<ul class="wp-block-list">
<li>Example: <a href="https://learn.microsoft.com/en-us/sql/ssms/agent/alerts?view=sql-server-ver16" target="_blank" rel="noreferrer noopener">Alerts</a></li>
</ul>
</li>
</ul>



<p>Of course, this is just a starting point. It&#8217;s the base set that we use for our clients. Depending on the workload and scenario for each SQL Server, we adjust what we schedule and how often we schedule it.</p>



<h2 class="wp-block-heading" id="h-what-can-we-do-about-the-too-important-sql-server">What can we do about the &#8220;too important SQL Server?&#8221;</h2>



<p>So, if you have a &#8220;friend&#8221; who works in an environment where a SQL Server is just too important to schedule preventative maintenance tasks, what can you tell them? What are their options? </p>



<h3 class="wp-block-heading" id="h-do-nothing">Do nothing</h3>



<p>You could do nothing and leave things as they are. But, as you can probably guess, that&#8217;s not a good option. It will likely get worse—either things will continue to deteriorate, or they may suffer a disruptive event.</p>



<h3 class="wp-block-heading" id="h-get-a-sql-health-check">Get a SQL Health Check</h3>



<p>Is the SQL Server configured to provide a good foundation for performance and reliability? Often, the answer is no. If that&#8217;s the case and your configuration settings are set incorrectly for the workload, a SQL Health Check can identify those issues before they become bigger problems. </p>



<h3 class="wp-block-heading" id="h-perform-a-baseline">Perform a baseline</h3>



<p>Review the metrics. Is the system I/O bound? Does it have enough memory? Would it benefit from additional cores?</p>



<h3 class="wp-block-heading" id="h-tune-performance">Tune performance</h3>



<p>Review the most resource-intensive queries and look for ways to improve them. Can you add a non-clustered covering index? Is there significant blocking occurring? Would some procedures benefit from being rewritten?</p>



<h3 class="wp-block-heading" id="h-off-load-reporting-workloads">Off-load reporting workloads</h3>



<p>Transactional systems are typically normalized for performance. Unfortunately, however, that often means that complex reports significantly hinder performance. Moving the reporting workload to a separate system could improve performance.</p>



<h3 class="wp-block-heading" id="h-implement-high-availability">Implement high availability</h3>



<p>If the applications are too important for preventative maintenance, perhaps HA will help. Implementing a failover cluster instance or even an availability group could allow for patching and other changes to be made with minimal disruption.</p>



<h3 class="wp-block-heading" id="h-separate-workloads">Separate workloads</h3>



<p>If this is a multi-use SQL Server, perhaps some databases may be moved to another SQL Server.</p>



<h4 class="wp-block-heading" id="h-something-to-keep-in-mind">Something to keep in mind</h4>



<p>Your friend may not have all of those options available to them. For example, tuning performance for a purchased application often requires close coordination with the vendor. However, trying to do something to maintain your SQL Server is better than doing nothing. </p>



<h2 class="wp-block-heading" id="h-additional-information-and-assistance">Additional information and assistance</h2>



<p>Want to learn more? Here are some other posts that may be helpful.</p>



<ul class="wp-block-list">
<li><a href="https://theserogroup.com/sql-server/why-is-my-sql-server-slow-14-common-reasons/" target="_blank" rel="noreferrer noopener">Why Is My SQL Server Slow? 14 Common Reasons</a></li>



<li><a href="https://theserogroup.com/dba/sql-server-maintenance-10-things-to-keep-your-sql-server-running-well/" target="_blank" rel="noreferrer noopener">SQL Server Maintenance: 10 Things to Keep Your SQL Server Running Well</a></li>



<li><a href="http://10 Unseen Things Successful DBAs Do">10 Unseen Things Successful </a><a href="https://theserogroup.com/dba/10-unseen-things-successful-dbas-do/" target="_blank" rel="noreferrer noopener">DBAs Do</a></li>
</ul>



<p>If you have an important SQL Server that&#8217;s not being maintained, we can help. <a href="https://theserogroup.com/contact-us/" target="_blank" rel="noreferrer noopener">Schedule a no-obligation discovery call</a>&nbsp;and let&#8217;s talk.</p>
<p>The post <a href="https://theserogroup.com/dba/schedule-preventative-maintenance-for-sql-server-key-steps-to-protect-your-database/">Schedule Preventative Maintenance for SQL Server: Key Steps to Protect Your Database</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6904</post-id>	</item>
		<item>
		<title>How to Encrypt Sensitive Text in SQL Server with ENCRYPTBYPASSPHRASE</title>
		<link>https://theserogroup.com/data-security/how-to-encrypt-sensitive-text-in-sql-server-with-encryptbypassphrase/</link>
		
		<dc:creator><![CDATA[Eric Cobb]]></dc:creator>
		<pubDate>Wed, 23 Oct 2024 12:00:00 +0000</pubDate>
				<category><![CDATA[Data Security]]></category>
		<category><![CDATA[Data Strategy]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[Database Development]]></category>
		<category><![CDATA[Script Library]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Security]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=6786</guid>

					<description><![CDATA[<p>Storing sensitive information in a database, like passwords or social security numbers, is common practice. However, storing them securely is less common. Unfortunately, one of the most typical approaches is to store sensitive information in a table as clear text. That means that anyone with access to that table can see all of that sensitive&#8230; <br /> <a class="read-more" href="https://theserogroup.com/data-security/how-to-encrypt-sensitive-text-in-sql-server-with-encryptbypassphrase/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/data-security/how-to-encrypt-sensitive-text-in-sql-server-with-encryptbypassphrase/">How to Encrypt Sensitive Text in SQL Server with ENCRYPTBYPASSPHRASE</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Storing sensitive information in a database, like passwords or social security numbers, is common practice. However, storing them securely is less common. Unfortunately, one of the most typical approaches is to store sensitive information in a table as clear text. That means that anyone with access to that table can see all of that sensitive data.</p>



<p>Just to be clear, storing sensitive information as a clear text string is a really, really,&nbsp;<em>really</em>&nbsp;bad idea.</p>



<p>Not encrypting information in a database can cause serious problems. As just one example, if the database is compromised, all user passwords could be exposed. Data breaches are becoming more and more common. If the authorities come knocking on your door, you need to be able to show them that you at least made a concerned effort to protect that data.</p>



<h2 class="wp-block-heading" id="h-encrypting-text-that-will-need-to-be-decrypted">Encrypting text that will need to be decrypted</h2>



<p>In some cases, you may be able to store your sensitive data as strongly encrypted text that will never need to be decrypted. For example, hashing a password used for your application login and then just comparing the hashed password for the login instead of the actual password. But, in most cases, being able to decrypt the sensitive data is going to be necessary.</p>



<p>In these cases,  <a href="https://docs.microsoft.com/en-us/sql/t-sql/functions/encryptbypassphrase-transact-sql" target="_blank" rel="noreferrer noopener">ENCRYPTBYPASSPHRASE</a> (available in SQL Server 2008 and up) offers one of the simplest ways for you to encrypt sensitive information in a way that can also be decrypted (by using <a href="https://docs.microsoft.com/en-us/sql/t-sql/functions/decryptbypassphrase-transact-sql" target="_blank" rel="noreferrer noopener">DECRYPTBYPASSPHRASE</a>). At its very basic, ENCRYPTBYPASSPHRASE requires two mandatory arguments: a passphrase used to generate the encryption key and the text to be encrypted.  Notice that it specifies a pass<strong><em>phrase</em></strong>, not pass<strong><em>word</em></strong>. There is an important difference between these two.</p>



<h2 class="wp-block-heading" id="h-a-passphrase-vs-a-password">A passphrase vs. a password</h2>



<p>As described in the ENCRYPTBYPASSPHRASE documentation:&nbsp;</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>A passphrase is a password that includes spaces. The advantage of using a passphrase is that it is easier to remember a meaningful phrase or sentence than to remember a comparably long string of characters.</em></p>
</blockquote>
</blockquote>



<p>Many people don’t realize that you can use a space as a legitimate special character in most passwords. By doing this, you can generate a much more secure password sentence (or phrase) instead of a single word. An example of a passphrase may be something like “I forgot my password!”</p>



<p>Just to be clear, a space is <strong><em>not </em></strong>required in your passphrase for ENCRYPTBYPASSPHRASE. If you wanted to use a GUID for your passphrase or a random string such as “Zgt9$Ex%*unZO8Z},” that is perfectly acceptable.</p>



<h2 class="wp-block-heading" id="h-using-nbsp-encryptbypassphrase">Using&nbsp;ENCRYPTBYPASSPHRASE</h2>



<p>For the examples in this post, I am going to use the encryption passphrase “This is my Passphrase!”, and the text to be encrypted is “ABC123”.</p>



<p>The basic syntax is:<br>ENCRYPTBYPASSPHRASE(‘encryption passphrase’, ‘text to encrypt’)</p>



<p>There are other arguments that can be used with&nbsp;ENCRYPTBYPASSPHRASE (see&nbsp;<a href="https://docs.microsoft.com/en-us/sql/t-sql/functions/encryptbypassphrase-transact-sql" target="_blank" rel="noreferrer noopener">MSDN Doc</a>), but for this simple example we are just using the&nbsp;two mandatory arguments.</p>



<p>To view the encrypted value of the text “ABC123”, you would use this script:</p>



<pre class="wp-block-code"><code>SELECT ENCRYPTBYPASSPHRASE(N'This is my Passphrase!', N'ABC123');</code></pre>



<p>That SELECT statement will return a&nbsp;VARBINARY value such as:&nbsp;<em>0x0100000093EEC20B790EF208B1FB631F0AB3028E3A8C196643C4BD578528A0DFAE7AB45B</em></p>



<p>It is important to note that the VARBINARY value returned from ENCRYPTBYPASSPHRASE is <a href="https://en.wikipedia.org/wiki/Nondeterministic_algorithm" target="_blank" rel="noreferrer noopener">nondeterministic</a>, meaning that even with the same input it will not generate the same output every time.  So you can run the exact same SELECT statement multiple times and get a different result each time.</p>



<p>Thankfully, this output has no bearing on using the DECRYPTBYPASSPHRASE function. As long as you have the correct passphrase, DECRYPTBYPASSPHRASE will successfully decrypt any of those VARBINARY results to their original value.</p>



<h2 class="wp-block-heading" id="h-storing-an-encrypted-value-in-a-table">Storing an encrypted value in a table</h2>



<p>Now that we know how to encrypt a sensitive text string, let’s take a look at how to store that encrypted value in a table. &nbsp;Since the value returned from&nbsp;ENCRYPTBYPASSPHRASE is a&nbsp;VARBINARY data type, that is how we want to store it since this is also the data type required by DECRYPTBYPASSPHRASE.</p>



<p>The first thing we need to do is determine the size of our encrypted column in our table. The VARBINARY values returned by ENCRYPTBYPASSPHRASE can vary in size, with maximum size of 8,000 bytes. The size of the returned value is going to depend on the size of the actual text being encrypted. You can use the <a href="https://docs.microsoft.com/en-us/sql/t-sql/functions/datalength-transact-sql" target="_blank" rel="noreferrer noopener">DATALENGTH</a> function to help figure that out. If you have a way to control the maximum allowed length of the sensitive text value you want to encrypt, use that size for your table column, but try not to use VARBINARY(8000) if you don’t have to.</p>



<p>Here is a simple example of storing our encrypted text in the [Password] column of a table:</p>



<pre class="wp-block-code"><code>CREATE TABLE dbo.Users (&#91;UserName] VARCHAR(50), &#91;Password] VARBINARY(50))
 
INSERT INTO dbo.Users (&#91;UserName], &#91;Password])
VALUES ('Charlie Brown', ENCRYPTBYPASSPHRASE(N'This is my Passphrase!', N'ABC123'))
 
SELECT &#91;UserName], &#91;Password]
FROM dbo.Users</code></pre>



<h2 class="wp-block-heading" id="h-using-decryptbypassphrase">Using DECRYPTBYPASSPHRASE</h2>



<p>Now that we have our sensitive text encrypted, we need to be able to decrypt it as well. &nbsp;This is easily done by using the&nbsp;DECRYPTBYPASSPHRASE function with the same passphrase we encrypted our text string with. However, DECRYPTBYPASSPHRASE also returns a VARBINARY value, which we will have to convert to a string. &nbsp;This can be done by adding a CONVERT function to our SELECT statement.</p>



<pre class="wp-block-code"><code>SELECT &#91;UserName], CONVERT(NVARCHAR, DECRYPTBYPASSPHRASE(N'This is my Passphrase!', &#91;Password]))
FROM dbo.Users</code></pre>



<p>Now you should see your decrypted value returned correctly in clear text. ENCRYPTBYPASSPHRASE offers a quick and easy way for you to encrypt text in SQL Server and can be useful for encrypting sensitive information if you need to be able to decrypt it later. </p>



<h2 class="wp-block-heading" id="h-want-to-work-with-the-sero-group">Want to work with The SERO Group?</h2>



<p>Want to learn more about how The SERO Group helps organizations take the guesswork out of managing their SQL Servers? <a href="https://theserogroup.com/contact-us/" target="_blank" rel="noreferrer noopener">Schedule a no-obligation discovery call</a>&nbsp;with us to get started.</p>
<p>The post <a href="https://theserogroup.com/data-security/how-to-encrypt-sensitive-text-in-sql-server-with-encryptbypassphrase/">How to Encrypt Sensitive Text in SQL Server with ENCRYPTBYPASSPHRASE</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6786</post-id>	</item>
		<item>
		<title>Useful Scripts For SQL Server Logins and Permissions</title>
		<link>https://theserogroup.com/dba/useful-scripts-for-sql-server-logins-and-permissions/</link>
		
		<dc:creator><![CDATA[Eric Cobb]]></dc:creator>
		<pubDate>Wed, 25 Sep 2024 12:00:00 +0000</pubDate>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[Database Development]]></category>
		<category><![CDATA[Script Library]]></category>
		<category><![CDATA[SQL Security]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=6676</guid>

					<description><![CDATA[<p>Since security and permissions are a big part of a DBA’s job, it&#8217;s important to be able to find out things like who has elevated login permissions or when a login was last used. Here are a few queries to help you check your server and database access. Most of these scripts are based off&#8230; <br /> <a class="read-more" href="https://theserogroup.com/dba/useful-scripts-for-sql-server-logins-and-permissions/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/dba/useful-scripts-for-sql-server-logins-and-permissions/">Useful Scripts For SQL Server Logins and Permissions</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Since security and permissions are a big part of a DBA’s job, it&#8217;s important to be able to find out things like who has elevated login permissions or when a login was last used. Here are a few queries to help you check your server and database access. Most of these scripts are based off of sys.dm_exec_sessions, a DMV that shows information about all active user connections. </p>



<p>I should also mention that the results of these queries will <strong>only go back to the last SQL Server start time</strong>. Anything that occurred before then won&#8217;t be available.</p>



<h3 class="wp-block-heading" id="h-logins-vs-users">Logins Vs. Users</h3>



<p>First, let&#8217;s take a look at the difference between “logins” and “users” in SQL Server, as people sometimes get them confused, or think they&#8217;re the same thing. A “login” allows access to a SQL Server instance. A “user” allows access to a specific database on that instance. Usually, a user is tied to a login, although you can have a user that is not tied to a login (known as a loginless user).</p>



<h3 class="wp-block-heading" id="h-when-was-the-last-time-a-login-was-used">When was the last time a login was used?</h3>



<pre class="wp-block-code"><code>--list of logins and last time each logged in
SELECT &#91;Login] = login_name 
	,&#91;Last Login Time] = MAX(login_time)
FROM sys.dm_exec_sessions
GROUP BY &#91;login_name];</code></pre>



<h3 class="wp-block-heading" id="h-which-logins-have-logged-in-within-the-last-x-hours">Which logins have logged in within the last X hours?</h3>



<pre class="wp-block-code"><code>--all logins in the last 4 hours
SELECT &#91;Login] = login_name
	,&#91;Last Login Time] = login_time
	,&#91;Host] = HOST_NAME
	,&#91;Program] = PROGRAM_NAME
	,&#91;Client Interface] =  client_interface_name
	,&#91;Database] = DB_NAME(database_id)
FROM sys.dm_exec_sessions
WHERE &#91;login_time] &gt; DATEADD(HH,-4,getdate())--modify date as needed
ORDER BY &#91;login_time] desc</code></pre>



<h3 class="wp-block-heading" id="h-how-many-times-has-each-login-logged-in-within-the-last-x-hours">How many times has each login logged in within the last X hours?</h3>



<pre class="wp-block-code"><code>--login counts for the last 4 hours
SELECT &#91;Login] = login_name
	,&#91;Last Login Time] = MAX(login_time)
	,&#91;Number Of Logins] = COUNT(*)
FROM sys.dm_exec_sessions
WHERE &#91;login_time] &gt; DATEADD(HH,-4,getdate())--modify date as needed
GROUP BY &#91;login_name]
ORDER BY &#91;Login] desc</code></pre>



<h3 class="wp-block-heading" id="h-which-logins-have-sysadmin-access">Which logins have Sysadmin access?</h3>



<pre class="wp-block-code"><code>--check for logins with sysadmin access
SELECT &#91;Login] = name
	,&#91;Login Type] = type_desc
	,&#91;Disabled] = is_disabled
FROM     master.sys.server_principals 
WHERE    IS_SRVROLEMEMBER ('sysadmin',name) = 1
ORDER BY &#91;Login]</code></pre>



<h3 class="wp-block-heading" id="h-checking-a-user-s-access-to-databases">Checking A User’s Access To Databases</h3>



<p>This query will return a list of databases that the specified user has access to. This will work for SQL Server Logins as well as Active Directory Logins.  This is done by specifying&nbsp;<a href="https://docs.microsoft.com/en-us/sql/t-sql/statements/execute-as-transact-sql" target="_blank" rel="noreferrer noopener">EXECUTE AS LOGIN</a>&nbsp;just before the query. (also be sure to specify&nbsp;<a href="https://docs.microsoft.com/en-us/sql/t-sql/statements/revert-transact-sql" target="_blank" rel="noreferrer noopener">REVERT&nbsp;</a>after the query runs)</p>



<p>It should be noted that this query only shows you what databases the user can access, not the permissions the user has on the databases.</p>



<pre class="wp-block-code"><code>EXECUTE AS LOGIN = 'YourDomain\User.Name' --Change This
	SELECT &#91;name]
	FROM MASTER.sys.databases
	WHERE HAS_DBACCESS(&#91;name]) = 1
REVERT</code></pre>



<h2 class="wp-block-heading" id="h-want-to-work-with-the-sero-group">Want to work with The SERO Group?</h2>



<p>Want to learn more about how The SERO Group helps organizations take the guesswork out of managing their SQL Servers? <a href="https://theserogroup.com/contact-us/" target="_blank" rel="noreferrer noopener">Schedule a no-obligation discovery call</a>&nbsp;with us to get started.</p>
<p>The post <a href="https://theserogroup.com/dba/useful-scripts-for-sql-server-logins-and-permissions/">Useful Scripts For SQL Server Logins and Permissions</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6676</post-id>	</item>
		<item>
		<title>Quick Tips for Faster SQL Servers: Don&#8217;t Name Your Stored Procedures Using The &#8220;sp_&#8221; Prefix</title>
		<link>https://theserogroup.com/sql-server/quick-tips-for-faster-sql-servers-dont-name-your-stored-procedures-using-the-sp_-prefix/</link>
		
		<dc:creator><![CDATA[Eric Cobb]]></dc:creator>
		<pubDate>Tue, 02 Jul 2024 21:23:49 +0000</pubDate>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[Database Development]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=6113</guid>

					<description><![CDATA[<p>A common mistake database developers make in SQL Server is naming their stored procedures with the &#8220;sp_&#8221; prefix. Organizations sometimes even adopt this as a standard convention (along with the &#8220;tbl_&#8221; prefix for tables!). So, why is this considered a bad practice? It&#8217;s inefficient. The &#8220;sp_&#8221; prefix is used by SQL Server to designate internal&#8230; <br /> <a class="read-more" href="https://theserogroup.com/sql-server/quick-tips-for-faster-sql-servers-dont-name-your-stored-procedures-using-the-sp_-prefix/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/sql-server/quick-tips-for-faster-sql-servers-dont-name-your-stored-procedures-using-the-sp_-prefix/">Quick Tips for Faster SQL Servers: Don&#8217;t Name Your Stored Procedures Using The &#8220;sp_&#8221; Prefix</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>A common mistake database developers make in SQL Server is naming their stored procedures with the &#8220;sp_&#8221; prefix. Organizations sometimes even adopt this as a standard convention (along with the &#8220;tbl_&#8221; prefix for tables!).</p>



<p>So, why is this considered a bad practice?</p>



<h2 class="wp-block-heading" id="h-it-s-inefficient">It&#8217;s inefficient.</h2>



<p>The &#8220;sp_&#8221; prefix is used by SQL Server to designate internal system procedures. So, whenever SQL Server sees “sp_” at the beginning of a stored procedure, it looks in the master database first. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<figure class="wp-block-image size-full"><a href="https://theserogroup.com/wp-content/uploads/2024/07/image.png"><img fetchpriority="high" decoding="async" width="800" height="160" src="https://theserogroup.com/wp-content/uploads/2024/07/image.png" alt="" class="wp-image-6164" srcset="https://theserogroup.com/wp-content/uploads/2024/07/image.png 800w, https://theserogroup.com/wp-content/uploads/2024/07/image-300x60.png 300w, https://theserogroup.com/wp-content/uploads/2024/07/image-768x154.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></a></figure>
<cite><a href="https://learn.microsoft.com/en-us/sql/t-sql/statements/create-procedure-transact-sql?view=sql-server-ver16&amp;redirectedfrom=MSDN">CREATE PROCEDURE (Transact-SQL) &#8211; SQL Server</a>, 2023, learn.microsoft.com</cite></blockquote>



<p>So, using the &#8220;sp_&#8221; prefix for a stored procedure is like giving SQL Server bad directions and then wondering what&#8217;s taking it so long.</p>



<h2 class="wp-block-heading" id="h-it-causes-conflicts-with-system-procedures-with-the-same-name">It causes conflicts with system procedures with the same name.</h2>



<p>If you accidentally named your stored procedure the same thing as one of those system procedures, SQL Server will execute the system procedure instead of your database procedure.</p>



<h2 class="wp-block-heading" id="h-it-means-taking-the-long-way-around-every-time">It means taking the long way around every time.</h2>



<p>This what SQL Server is triggered to do every time an &#8220;sp_&#8221; stored procedure is called:</p>



<ol class="wp-block-list">
<li>Stop processing in your database.</li>



<li>Jump over to the master database.</li>



<li>Scan every stored procedure.</li>



<li>Come back to your database.</li>



<li>Find and execute the procedure you were looking for in the first place.</li>
</ol>



<p>All of those steps take time. Multiplying that time by the number of stored procedures, then multiplying that by the number of times those procedures are called per day, you can end up with significantly slower performance. </p>



<h2 class="wp-block-heading" id="h-the-simple-solution">The simple solution</h2>



<p>When you avoid the &#8220;sp_&#8221; prefix, you ensure that SQL Server immediately looks in your database. This makes the procedure faster to find and execute. What&#8217;s not to like about that?</p>



<h2 class="wp-block-heading" id="h-one-exception-utility-procedures">One exception: utility procedures</h2>



<p>If you&#8217;re creating a utility procedure, like&nbsp;<a href="https://whoisactive.com/downloads/" target="_blank" rel="noreferrer noopener">sp_whoisactive</a>,&nbsp;that you intend to run everywhere, then using the &#8220;sp_&#8221; prefix can be useful. Do so sparingly and only when creating a procedure in the master database that you want to have accessible from all other databases.</p>



<h2 class="wp-block-heading" id="h-want-to-work-with-us">Want to work with us?</h2>



<p>Want to learn more about how The SERO Group helps organizations take the guesswork out of managing their SQL Servers? <a href="https://theserogroup.com/contact-us/" target="_blank" rel="noreferrer noopener">Schedule a call</a> with us to get started.</p>
<p>The post <a href="https://theserogroup.com/sql-server/quick-tips-for-faster-sql-servers-dont-name-your-stored-procedures-using-the-sp_-prefix/">Quick Tips for Faster SQL Servers: Don&#8217;t Name Your Stored Procedures Using The &#8220;sp_&#8221; Prefix</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6113</post-id>	</item>
	</channel>
</rss>
