<?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>SQL Server Consulting Archives - The SERO Group</title>
	<atom:link href="https://theserogroup.com/category/sql-server-consulting/feed/" rel="self" type="application/rss+xml" />
	<link>https://theserogroup.com/category/sql-server-consulting/</link>
	<description>SQL Servers Healthy, Secure, And Reliable</description>
	<lastBuildDate>Tue, 16 Dec 2025 18:34:56 +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>SQL Server Consulting Archives - The SERO Group</title>
	<link>https://theserogroup.com/category/sql-server-consulting/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">121220030</site>	<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>Choosing the Right SQL Server Partner for Your Core Banking Upgrade</title>
		<link>https://theserogroup.com/sql-server-consulting/choosing-the-right-sql-server-partner-for-your-core-banking-upgrade/</link>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Wed, 28 May 2025 12:00:33 +0000</pubDate>
				<category><![CDATA[SQL Server Consulting]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Audit]]></category>
		<category><![CDATA[SQL Consulting]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Consultant]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<category><![CDATA[SQL Upgrades]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=7473</guid>

					<description><![CDATA[<p>Upgrading your core banking system that supports the core banking system is a major initiative that demands meticulous planning, cross-team coordination, and deep technical know-how. For banks and financial institutions, SQL Server is often the backbone of these systems. That’s why the role of a SQL Server partner during a core banking upgrade is critical.&#8230; <br /> <a class="read-more" href="https://theserogroup.com/sql-server-consulting/choosing-the-right-sql-server-partner-for-your-core-banking-upgrade/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/sql-server-consulting/choosing-the-right-sql-server-partner-for-your-core-banking-upgrade/">Choosing the Right SQL Server Partner for Your Core Banking Upgrade</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Upgrading your core banking system that supports the core banking system is a major initiative that demands meticulous planning, cross-team coordination, and deep technical know-how. For banks and financial institutions, SQL Server is often the backbone of these systems. That’s why the role of a SQL Server partner during a core banking upgrade is critical.</p>



<p>Whether you’re migrating to a new platform, upgrading legacy infrastructure, or implementing new security and compliance protocols, your SQL Server partner isn’t just a vendor—they’re a strategic collaborator.</p>



<p>So, what should you expect from a SQL Server partner during your next core banking upgrade?</p>



<h2 class="wp-block-heading" id="h-the-best-sql-server-partners-for-core-banking-upgrades-deliver">The Best SQL Server Partners for Core Banking Upgrades Deliver:</h2>



<h3 class="wp-block-heading" id="h-1-deep-sql-server-expertise-and-core-banking-systems-familiarity">1. Deep SQL Server Expertise and Core Banking Systems Familiarity</h3>



<p>Core banking environments are complex. They handle everything from transaction processing and customer account management to regulatory reporting and data security. Your SQL Server partner must understand not only the technical architecture but also the core banking systems&#8217; operating requirements.</p>



<p>Expect your partner to ask the right questions about your environment, your data dependencies, your peak usage times, and your business continuity and recovery needs. The best SQL Server consultants come equipped with industry experience and a blueprint for helping banks navigate change.</p>



<p>Core banking system providers are experts in their own software, but they’re not always expert SQL Server administrators. That’s where a specialized SQL Server consultant adds value. They ask the right infrastructure questions, including about Recovery Point Objectives (RPOs) and Recovery Time Objectives (RTOs). These metrics help ensure your SQL environment supports your business continuity and disaster recovery needs. A knowledgeable SQL partner can turn those objectives into strategies like point-in-time recovery, automated failover, and high-availability design.</p>



<h3 class="wp-block-heading" id="h-2-rigorous-planning-and-a-clear-project-timeline">2. Rigorous Planning and a Clear Project Timeline</h3>



<p>A core banking database upgrade isn’t something to approach casually. Your SQL Server partner should help you scope and sequence every phase of the upgrade, including:</p>



<ul class="wp-block-list">
<li>Environment assessments and baseline performance benchmarks</li>



<li>Compatibility testing with the new infrastructure</li>



<li>Backup and restore strategies for rollback protection</li>



<li>Performance settings recommendations</li>



<li>Cutover planning and go-live support</li>
</ul>



<p>Look for partners who can produce a detailed project plan and who proactively manage timelines, milestones, and communication. You shouldn&#8217;t have to tolerate surprises—and neither should your customers. </p>



<h3 class="wp-block-heading" id="h-3-zero-downtime-or-near-zero-migration-strategies">3. Zero-Downtime (or Near-Zero) Migration Strategies</h3>



<p>Unplanned downtime in core banking systems means customer impact, reputational risk, and possible regulatory scrutiny. SQL Server partners should be able to offer strategies that minimize or eliminate unexpected downtime through:</p>



<ul class="wp-block-list">
<li>High availability (HA) and disaster recovery (DR) design reviews</li>



<li>Pre-migration dry runs to simulate live scenarios</li>



<li>Staged cutovers during low-usage periods</li>
</ul>



<p>Expect your partner to not only explain these strategies but also test and validate them in your environment before launch day.</p>



<h3 class="wp-block-heading" id="h-4-compliance-and-security-oversight">4. Compliance and Security Oversight</h3>



<p>With the <a href="https://www.ffiec.gov/news/press-releases/2024/an-09-29" target="_blank" rel="noreferrer noopener">FFIEC sunsetting its Cybersecurity Assessment Tool</a> and <a href="https://theserogroup.com/sql-server-cis-benchmarks-assessment/" target="_blank" rel="noreferrer noopener">CIS® Benchmarks™</a> gaining ground as the new standard, your SQL Server partner must be fluent in financial data security requirements.</p>



<p>They should review your SQL Server configuration for gaps, recommend security hardening, and help you prepare for both internal and external audits. This includes:</p>



<ul class="wp-block-list">
<li>Encrypted backups and secure storage</li>



<li>Role-based access controls</li>



<li>Configuration baselines aligned with best practices</li>



<li>Detailed documentation for compliance reviews</li>
</ul>



<h3 class="wp-block-heading" id="h-5-post-upgrade-monitoring-and-support">5. Post-Upgrade Monitoring and Support</h3>



<p>A good partner doesn&#8217;t just help you upgrade. They help you meet your regulator with confidence.</p>



<p>The job isn’t finished when the core system goes live. The first few weeks post-upgrade are critical. Your SQL Server partner should offer extended support to monitor system performance, resolve unexpected issues, and ensure optimal database operation.</p>



<p>Banks should expect:</p>



<ul class="wp-block-list">
<li>Real-time monitoring for performance and error trends</li>



<li>Rapid-response troubleshooting</li>



<li>Ongoing patching, maintenance, and tuning</li>



<li>A smooth transition to in-house teams or ongoing DBA-as-a-Service</li>
</ul>



<p>This post-upgrade care is what separates good partners from great ones.</p>



<h2 class="wp-block-heading" id="h-choose-a-partner-who-understands-banking">Choose a Partner Who Understands Banking</h2>



<p>A core banking upgrade isn’t just technical. You need a partner who is not only steeped in SQL Server but also understands your industry, speaks your language, and can deliver with precision. At The SERO Group, <a href="https://theserogroup.com/for-financial-institutions/" target="_blank" rel="noreferrer noopener">we specialize in helping financial institutions</a> modernize their SQL Server environments while prioritizing SQL Server health, security, and reliability.</p>



<p>If you have an upgrade to core banking system on the horizon, <a href="https://theserogroup.com/contact-us/#schedule-a-call" target="_blank" rel="noreferrer noopener">let’s talk</a>. We’ll help you plan, execute, and support your transition—every step of the way.</p>
<p>The post <a href="https://theserogroup.com/sql-server-consulting/choosing-the-right-sql-server-partner-for-your-core-banking-upgrade/">Choosing the Right SQL Server Partner for Your Core Banking Upgrade</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7473</post-id>	</item>
		<item>
		<title>Five Goals for Your SQL Servers in the New Year</title>
		<link>https://theserogroup.com/azure/five-goals-for-your-sql-servers-in-the-new-year/</link>
					<comments>https://theserogroup.com/azure/five-goals-for-your-sql-servers-in-the-new-year/#comments</comments>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Tue, 05 Jan 2021 16:51:10 +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[Sero]]></category>
		<category><![CDATA[Sero Group]]></category>
		<category><![CDATA[Shared Disks]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Assessment]]></category>
		<category><![CDATA[SQL Audit]]></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=3431</guid>

					<description><![CDATA[<p>We’ve made it! The start of a new year. Now is a great time to reflect on what you’d like to accomplish over the next 12 months at work, and more specifically, what you would like to do with your SQL Server environment this year. To help with that, here are five activities or goals&#8230; <br /> <a class="read-more" href="https://theserogroup.com/azure/five-goals-for-your-sql-servers-in-the-new-year/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/azure/five-goals-for-your-sql-servers-in-the-new-year/">Five Goals for Your SQL Servers in the New Year</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>We’ve made it! The start of a new year. Now is a great time to reflect on what you’d like to accomplish over the next 12 months at work, and more specifically, what you would like to do with your SQL Server environment this year. To help with that, here are five activities or goals to think about for your SQL Servers over the next 12 months. Take these as a starting point and make them your own.&nbsp;</p>



<h2 class="wp-block-heading" id="h-goals-for-your-sql-servers">Goals for your SQL Servers </h2>



<p>Although every environment is unique and each business has its own set of important measures for success, here are five goals for your SQL Servers to consider as you plan the coming months. These goals are designed to help build a robust and responsive data infrastructure to support your organization. </p>



<ol class="wp-block-list" type="1">
<li>Assess your SQL Servers</li>



<li>Update your SQL Servers</li>



<li>Start performing health checks</li>



<li>Implement monitoring and alerting&nbsp;</li>



<li>Review your Disaster Recovery plans</li>
</ol>



<h3 class="wp-block-heading" id="h-goal-1-assess-your-sql-servers">Goal 1: Assess your SQL Servers</h3>



<p>Whether you’re responsible for one SQL Server sitting in a server room next to you or hundreds of SQL Servers spread around the world, it can be difficult to keep up with the exact configuration of each SQL Server. This is especially true if you&#8217;re time is split. For example, when you&#8217;re a network administrator, web developer, or systems admin who is also tasked with taking care of the SQL Servers in your spare time. </p>



<p>Uncertainty about the patch level, configuration, and health of each or your SQL Servers creates stress and unease. Doubts creep in. </p>



<p>Do any of these internal dialogs sound familiar?&nbsp;</p>



<ul class="wp-block-list">
<li>Are the SQL Servers behind on patching? Probably, I’m not sure, but they are working, right? (See <a href="https://theserogroup.com/sql-server/is-there-an-update-for-my-sql-server/">Is There an Update for My SQL Server?</a>)</li>



<li>Are the SQL Servers configured optimally? Probably not. I’ve been meaning to do some research and check. But at least no one is complaining right now.&nbsp;And no new is good news? (See <a href="https://theserogroup.com/sql-server/is-my-sql-server-configured-properly/">Is My SQL Server Configured Properly?</a>)</li>



<li>Are the databases healthy? I remember setting up some maintenance jobs a while back, I think. If they weren’t healthy, I’m pretty sure I&#8217;d know.&nbsp;</li>



<li>We pay a maintenance fee to the application vender. Does that include applying SQL Server updates? I&#8217;m not sure.</li>



<li>Ok, I really should have a look, but ugh, when?&nbsp;</li>
</ul>



<p>Now is that time. The new year brings with it an opportunity to examine each of your production SQL Servers to see if they are configured optimally. </p>



<p>So what should you check?</p>



<p>Examine the log files, the configuration settings, the maintenance jobs, the performance DMVs, and patch level of each of your critical servers. Do you have the right number of tempdb files? Do you have any unneeded services running? Are there an excessive number of waits being reported? Are you still using the default values for MAXDOP and Cost Threshold for Parallelism? Etc?</p>



<p>Look for areas of concern, and there will likely be some, and prioritize resolving them.&nbsp;</p>



<p>Not sure where to start? We can help &#8211; <a href="https://theserogroup.com/#schedule-an-assessment">Getting Started with a SQL Server Assessment</a>.</p>



<h3 class="wp-block-heading" id="h-goal-2-update-your-sql-servers-nbsp">Goal 2: Update your SQL Servers&nbsp;</h3>



<p>Once you’ve assessed your SQL Servers, you know your starting point. You know the overall health of each instance. Next, make a plan to address or remediate the instances as needed.&nbsp;</p>



<p>Start with the most important servers first and attack the Priority 1 issues as soon as you can. The P1 issues are those items that are of grave concern due to security and data integrity, recoverability, and availability.&nbsp;</p>



<p>&#8220;As soon as you can&#8221; will mean different things to different organizations. Some environments allow minor changes and patches directly to production servers during off hours. For example, want to apply the latest CU? &#8220;Sure. Anytime after 7:00 PM Thursday will be fine.&#8221;&nbsp;</p>



<p>Other businesses have a more standardized process in place. Make a remediation plan; confirm with application venders; present the plan to the Change Control Committee for review, deconflicting, and sequencing; apply the changes to a lower level environment; confirm with the QA team that the changes didn&#8217;t introduce ill effects; add the patch to the list for the next quarterly patching window, etc.&nbsp;</p>



<p>Whatever your approach, get the process started.&nbsp;</p>



<h3 class="wp-block-heading" id="h-goal-3-start-performing-health-checks">Goal 3: Start performing health checks</h3>



<p>You’ve assessed and remediated your SQL Servers. Now, let’s ensure that the environment remains up to date and in good health. Make a plan to check on your SQL Servers regularly. </p>



<p>We recommend Daily Health Checks for your SQL Servers. (That’s what we do for our <a href="https://theserogroup.com/database-administration-as-a-service">DBA as a Service</a> customers.)</p>



<p>Create a checklist to review each day. Some things we like to check are:&nbsp;</p>



<ul class="wp-block-list">
<li>Review the SQL Server and Windows log files for errors, unexpected restarts, excessive failed login attempts, and other warnings that could indicate potential issues.</li>



<li>Check the history for each scheduled SQL Agent job to ensure none have failed.&nbsp;</li>



<li>Examine the size and growth of each data and log file to check for anomalies in growth.&nbsp;</li>



<li>Verify that each SQL Server is up to date on patches. </li>
</ul>



<h3 class="wp-block-heading" id="h-goal-4-implement-monitoring-and-alerting-nbsp">Goal 4: Implement monitoring and alerting&nbsp;</h3>



<p>Proactively checking the status of each of your SQL Servers is helpful. But there may be occasions in between the health checks when the SQL Server experiences difficulties. When that happens, it’s really nice to know that before your users and your boss becomes aware.&nbsp;</p>



<p>It’s best to identify and resolve an issue before anyone else notices. However, the next best thing is to be able to answer a call with “Yeah, I know and I’m working on it,” rather than “Really? When did this start? Tell me the server again.”&nbsp;</p>



<p>To get to that point, you’ll want to ensure that all SQL Servers are configured with Database Mail, and that standard alerts are created. We recommend creating alerts for all errors with a Severity level 16 or above, along with errors 823, 824, and 825. There may be other alerts you’ll want to create in your environment as well.&nbsp;</p>



<p>Additionally you’ll want to ensure that all jobs are configured to notify you upon failure.&nbsp;Make sure to enable the Fail Safe Operator, too. You never know when msdb will have an issue.</p>



<p>Often there are other events inside of SQL Server that you’ll want to know about when they happen. Maybe it’s Disk I/O latencies? Or the occurrence of deadlocks? Or perhaps it’s an excessive number of recompiles?&nbsp;</p>



<p>That&#8217;s when a more advanced monitoring solutions can help. We’ve used most of them in our customer environments and all add value over what you can do solely in SQL Server. Our preference is <a href="https://www.sentryone.com/sql-server/sql-server-monitoring" target="_blank" rel="noreferrer noopener">SentryOne’s SQLSentry</a>. It&#8217;s well designed and very helpful.</p>



<p>Whichever you choose, install it, configure it, tune it, and then actually use it. </p>



<p>Too often, we see environments where a monitoring tool was purchased and even installed, but ignored because no one had the time to figure it out. There were too many warnings so the team began ignoring or disabling them.&nbsp;</p>



<h3 class="wp-block-heading" id="h-goal-5-review-your-disaster-recovery-plans-nbsp">Goal 5: Review your Disaster Recovery plans&nbsp;</h3>



<p>Despite all of your efforts to create and keep a healthy system, bad things can still happen.&nbsp;</p>



<p>Hardware can fail. Databases can corrupt. Users can delete data. Not to mention other issues like ransomware hitting your network, tornados hitting your data center, or any of the other things a year like 2020 can throw at us.&nbsp;(See <a href="https://theserogroup.com/sql-server/protect-your-sql-server-from-mrbminer-and-other-malware-attacks/">Protect Your SQL Server from MrbMiner and Other Malware Attacks)</a></p>



<p>We live in a world where the ability to recover from the unexpected is, well, to be expected.</p>



<p>So, now is a great time to review your High Availability and Disaster Recovery plans.&nbsp;</p>



<ul class="wp-block-list">
<li>Work with your business stakeholders to understand their expectations. What is their Recovery Time Objectives (RTO) and Recover Point Objectives (RPO)? </li>



<li>Brainstorm ways to accomplish your objectives. Should you consider <a href="https://theserogroup.com/sql-server/how-to-create-sql-server-2019-failover-clustered-instances-in-azure/">Failover Clustered Instances</a>? Or maybe other <a href="https://theserogroup.com/sql-server/hadr-options-for-sql-server/">HA/DR options</a>?&nbsp;</li>



<li>Create a cadence to test your SQL Server backups. Restore selected database backups to a test system and run an integrity check on the restored database periodically. Schedule it on your calendar.</li>



<li>Document your processes. Record the steps and all the information you’ll need, including contact names and numbers, that will be important should an event requiring a recovery become necessary.&nbsp;</li>



<li>Schedule DR tests. There is nothing more insightful than actually going the process over a weekend. It will reveal shortcomings and gaps in your plans or documentation. Refine your plans and test again a few months later.</li>
</ul>



<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 SERO Group helps organizations take the guesswork out of managing their SQL Servers? It’s easy and there is no obligation.&nbsp;</p>



<p><a href="https://theserogroup.com/#contact" target="_blank" rel="noreferrer noopener">Schedule a call</a> with us to get started.</p>
<p>The post <a href="https://theserogroup.com/azure/five-goals-for-your-sql-servers-in-the-new-year/">Five Goals for Your SQL Servers in the New Year</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://theserogroup.com/azure/five-goals-for-your-sql-servers-in-the-new-year/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3431</post-id>	</item>
		<item>
		<title>Who&#8217;s the SQL Server Database Owner and How Can You Change It?</title>
		<link>https://theserogroup.com/sql-server/whos-the-sql-server-database-owner-and-how-can-you-change-it/</link>
					<comments>https://theserogroup.com/sql-server/whos-the-sql-server-database-owner-and-how-can-you-change-it/#comments</comments>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Tue, 29 Dec 2020 20:26:20 +0000</pubDate>
				<category><![CDATA[Data Security]]></category>
		<category><![CDATA[DBA]]></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[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[Database Development]]></category>
		<category><![CDATA[IT Manager]]></category>
		<category><![CDATA[Script Library]]></category>
		<category><![CDATA[Sero]]></category>
		<category><![CDATA[Sero Group]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Assessment]]></category>
		<category><![CDATA[SQL Audit]]></category>
		<category><![CDATA[SQL Consultant]]></category>
		<category><![CDATA[SQL Security]]></category>
		<category><![CDATA[SQL Server Consultant]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<category><![CDATA[SQL Training]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=3405</guid>

					<description><![CDATA[<p>In SQL Server, when someone creates a database, they own it. That means they have elevated permissions on the database. The SQL Server database owner can change configuration parameters, perform maintenance, and grant permissions on the database to other users. The database owner can even drop the database altogether. In highly secure environments (and what&#8230; <br /> <a class="read-more" href="https://theserogroup.com/sql-server/whos-the-sql-server-database-owner-and-how-can-you-change-it/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/sql-server/whos-the-sql-server-database-owner-and-how-can-you-change-it/">Who&#8217;s the SQL Server Database Owner and How Can You Change It?</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In SQL Server, when someone creates a database, they own it. That means they have elevated permissions on the database. The SQL Server database owner can change configuration parameters, perform maintenance, and grant permissions on the database to other users. The database owner can even drop the database altogether.</p>



<p>In highly secure environments (and what environment shouldn&#8217;t be classified as highly secure these days?) all of these permissions can create headaches for auditors, CISOs, and even DBAs. </p>



<p>That&#8217;s not good. Yet, it&#8217;s not uncommon for individual users to own specific and important databases. In fact, this is one of the common findings we uncover during our <a href="https://theserogroup.com/sql-configuration-assessment/">SQL Health Checks</a> for customers.</p>



<h2 class="wp-block-heading">Who Owns Your SQL Server Database?</h2>



<p>So how do individual users end up becoming SQL Server database owners? </p>



<p>Take, for example, the Chief Marketing Officer who authorizes her team to build a database to track their activities. Over time, the database grows and becomes more important. Eventually the team doesn&#8217;t want to &#8220;own&#8221; the responsibility for it any longer so it&#8217;s handed over to the DBA team for updates, maintenance, backups, HA/DR planning, licensing, etc. Except, no one really thought about the database owner during the transfer. So the power user that created the database still owns it, even though he doesn&#8217;t work on the CMO&#8217;s team any longer. </p>



<p>So, how can you tell if this may have happened in your environment? Or put another way, how can you tell who the database owner is for a database? Let&#8217;s look at three ways.</p>



<h3 class="wp-block-heading">Find the database owner using Database Properties</h3>



<p>One of the easiest ways to determine the database owner is to view its properties. Using either SQL Server Management Studio (SSMS) or Azure Data Studio (ADS) drill down to the database, right click on it, and select Properties to open the following window. Under the Database heading, you&#8217;ll see its owner.</p>



<figure class="wp-block-image size-large"><a href="https://theserogroup.com/wp-content/uploads/2020/12/dbownerdatabaseproperties.png"><img fetchpriority="high" decoding="async" width="1024" height="859" src="https://theserogroup.com/wp-content/uploads/2020/12/dbownerdatabaseproperties-1024x859.png" alt="Database properties database owner" class="wp-image-3407" srcset="https://theserogroup.com/wp-content/uploads/2020/12/dbownerdatabaseproperties-1024x859.png 1024w, https://theserogroup.com/wp-content/uploads/2020/12/dbownerdatabaseproperties-300x252.png 300w, https://theserogroup.com/wp-content/uploads/2020/12/dbownerdatabaseproperties-768x644.png 768w, https://theserogroup.com/wp-content/uploads/2020/12/dbownerdatabaseproperties-1288x1080.png 1288w, https://theserogroup.com/wp-content/uploads/2020/12/dbownerdatabaseproperties.png 1358w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>In this example, the <a href="https://theserogroup.com/career-development/data-getcha-data-here/">BaseballData </a>database is owned by the Joe login.</p>



<p>Pretty simple for a single database, but very cumbersome for a few dozen or a few hundred databases spread across dozens of SQL Servers. So let’s look at two programmatic ways to check the database owner. </p>



<h3 class="wp-block-heading">Find the database owner using T-SQL</h3>



<p>Using your SQL Server query tool of choice, SSMS or ADS, run the following T-SQL query to see the owner for every database attached to this instance of SQL Server.</p>



<pre class="wp-block-code"><code> SELECT name, 
        suser_sname( owner_sid ) AS DBOwnerName
 FROM master.sys.databases;</code></pre>



<p>Or, if you prefer, you can limit the results to show only those databases not owned by a specific user, such as sa. </p>



<pre class="wp-block-code"><code> SELECT name, 
        suser_sname( owner_sid ) AS DBOwnerName
 FROM master.sys.databases
 WHERE suser_sname( owner_sid ) != 'sa';</code></pre>



<p>In my example, I&#8217;d get the following results in an ADS window.</p>



<figure class="wp-block-image size-large"><a href="https://theserogroup.com/wp-content/uploads/2020/12/Dbownertsqlresults-1.png"><img decoding="async" width="216" height="88" src="https://theserogroup.com/wp-content/uploads/2020/12/Dbownertsqlresults-1.png" alt="Database owners that are not sa" class="wp-image-3411"/></a></figure>



<h3 class="wp-block-heading">Find the database owner using PowerShell and dbatools.io</h3>



<p>For fans of PowerShell and <a rel="noreferrer noopener" href="https://dbatools.io/" target="_blank">dbatools</a>, the <a rel="noreferrer noopener" href="https://docs.dbatools.io/#Get-DbaDatabase" target="_blank">Get-DbaDatabase</a> command can be used to determine the database owner. In the code below I pipe the results to a Where-Object to show only those databases not owned by sa. For readability, I pass the results through Format-Table. </p>



<pre class="wp-block-code"><code>Get-DbaDatabase -SqlInstance localhost -SqlCredential sa | Where-Object {$_.Owner -ne "sa"} | Format-Table -Property Name, Owner </code></pre>



<figure class="wp-block-image size-large"><a href="https://theserogroup.com/wp-content/uploads/2020/12/databaseownerpowershell.png"><img decoding="async" width="1024" height="92" src="https://theserogroup.com/wp-content/uploads/2020/12/databaseownerpowershell-1024x92.png" alt="Find the database owner using powershell" class="wp-image-3408" srcset="https://theserogroup.com/wp-content/uploads/2020/12/databaseownerpowershell-1024x92.png 1024w, https://theserogroup.com/wp-content/uploads/2020/12/databaseownerpowershell-300x27.png 300w, https://theserogroup.com/wp-content/uploads/2020/12/databaseownerpowershell-768x69.png 768w, https://theserogroup.com/wp-content/uploads/2020/12/databaseownerpowershell-1536x138.png 1536w, https://theserogroup.com/wp-content/uploads/2020/12/databaseownerpowershell-2048x184.png 2048w, https://theserogroup.com/wp-content/uploads/2020/12/databaseownerpowershell-1920x173.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">Who Should Own Your Database</h2>



<p>Now that you know who your SQL Server database owners are, the next question is: who should own your databases? </p>



<p>There are differing thoughts on this. Some advocate creating a specific disabled account to own all databases. Others contend that sa should own the databases. Still others opt for other approaches.</p>



<p>We recommend having sa own all databases. It&#8217;s not a perfect solution, but it&#8217;s consistent, clear, and meets the company and compliance needs in most cases. </p>



<h2 class="wp-block-heading">How to Change Who Owns Your Database</h2>



<p>Once you&#8217;ve decided who the SQL Server database owner should be and you&#8217;ve identified those databases not owned by that account, let&#8217;s look at a couple of ways you can change to database owner. </p>



<h3 class="wp-block-heading">Change the database owner using T-SQL</h3>



<p>To change database owner, use the <a href="https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-authorization-transact-sql?view=sql-server-ver15">ALTER AUTHORIZATION</a> command. In the following example, I&#8217;m changing the owner of the BaseballData database to sa. If needed, you can script this out for every database on the server that isn&#8217;t already owned by sa. </p>



<pre class="wp-block-code"><code>ALTER AUTHORIZATION ON DATABASE::BaseballData TO sa;
</code></pre>



<h3 class="wp-block-heading">Change the database owner using PowerShell and dbatools.io </h3>



<p>You can also use the <a href="https://docs.dbatools.io/#Set-DbaDbOwner" target="_blank" rel="noreferrer noopener">Set-DbaDbOwner</a> command of dbatools.io to do this. In the following command, I&#8217;m setting the owner of the BaseballData database to the command default sa. </p>



<pre class="wp-block-code"><code>Set-DbaDbOwner -SqlInstance localhost -SqlCredential sa -Database BaseballData</code></pre>



<p>If I don&#8217;t want to use the sa account as the database owner, I can specify who the owner should be using the TargetLogin parameter as shown below. </p>



<pre class="wp-block-code"><code>Set-DbaDbOwner -SqlInstance localhost -SqlCredential sa -Database BaseballData -TargetLogin disabled_login_with_complex_pwd</code></pre>



<p>Or, I can broaden the scope to include all databases on the specified instance by omitting the Database parameter, as shown below. </p>



<pre class="wp-block-code"><code>Set-DbaDbOwner -SqlInstance localhost -SqlCredential sa </code></pre>



<figure class="wp-block-image size-large"><a href="https://theserogroup.com/wp-content/uploads/2020/12/databaseownerchangedbatools.png"><img loading="lazy" decoding="async" width="1024" height="248" src="https://theserogroup.com/wp-content/uploads/2020/12/databaseownerchangedbatools-1024x248.png" alt="Change database owner using dbatools" class="wp-image-3423" srcset="https://theserogroup.com/wp-content/uploads/2020/12/databaseownerchangedbatools-1024x248.png 1024w, https://theserogroup.com/wp-content/uploads/2020/12/databaseownerchangedbatools-300x73.png 300w, https://theserogroup.com/wp-content/uploads/2020/12/databaseownerchangedbatools-768x186.png 768w, https://theserogroup.com/wp-content/uploads/2020/12/databaseownerchangedbatools.png 1224w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">Want to work with The Sero Group?</h2>



<p>Want to learn more about how SERO Group helps organizations take the guesswork out of managing their SQL Servers? It’s easy and there is no obligation.&nbsp;</p>



<p><a href="https://theserogroup.com/schedule-a-call/" target="_blank" rel="noreferrer noopener">Schedule a call</a> with us to get started.</p>



<p>Download our free “<a href="https://theserogroup.com/#common-issues">SQL Server Configuration: 5 Common Issues That May Be Putting Your Data at Risk” PDF</a> and discover some commonly overlooked SQL Server settings that can have dramatic effects on your server’s performance and reliability.</p>
<p>The post <a href="https://theserogroup.com/sql-server/whos-the-sql-server-database-owner-and-how-can-you-change-it/">Who&#8217;s the SQL Server Database Owner and How Can You Change It?</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://theserogroup.com/sql-server/whos-the-sql-server-database-owner-and-how-can-you-change-it/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3405</post-id>	</item>
		<item>
		<title>Securing Your SQL Servers, What Should You Audit?</title>
		<link>https://theserogroup.com/sql-server/securing-your-sql-servers-what-should-you-audit/</link>
					<comments>https://theserogroup.com/sql-server/securing-your-sql-servers-what-should-you-audit/#comments</comments>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Wed, 16 Dec 2020 15:30:00 +0000</pubDate>
				<category><![CDATA[Data Security]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Consulting]]></category>
		<category><![CDATA[The Sero Group]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[Database Development]]></category>
		<category><![CDATA[IT Manager]]></category>
		<category><![CDATA[Sero]]></category>
		<category><![CDATA[Sero Group]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Assessment]]></category>
		<category><![CDATA[SQL Audit]]></category>
		<category><![CDATA[SQL Consultant]]></category>
		<category><![CDATA[SQL Security]]></category>
		<category><![CDATA[SQL Server Consultant]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=3395</guid>

					<description><![CDATA[<p>Securing and protecting your SQL Servers from the ever present threats of data breaches, ransomware, and even accidental data losses due to errant code or faulty systems is crucial. It&#8217;s one of the core responsibilities of a DBA. It would be great if there was a one-size fits all approach to data protection &#8211; one&#8230; <br /> <a class="read-more" href="https://theserogroup.com/sql-server/securing-your-sql-servers-what-should-you-audit/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/sql-server/securing-your-sql-servers-what-should-you-audit/">Securing Your SQL Servers, What Should You Audit?</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Securing and protecting your SQL Servers from the ever present threats of data breaches, ransomware, and even accidental data losses due to errant code or faulty systems is crucial. It&#8217;s one of the core responsibilities of a DBA. </p>



<p>It would be great if there was a one-size fits all approach to data protection &#8211; one system that would keep the bad guys out, the good guys within the guardrails, and Murphy&#8217;s Law safely neutralized. But, of course, the truth is that it is not that simple.</p>



<h2 class="wp-block-heading" id="h-securing-and-protecting-your-sql-servers">Securing and protecting your SQL Servers</h2>



<p>In April 2020 The Motley Fool reported that <a href="https://www.fool.com/investing/2020/08/04/garmin-reportedly-paid-hackers-10-million-to-obtai.aspx">Garmin paid $10M for a decryption key</a>. When <a href="https://www.baltimoresun.com/maryland/baltimore-city/bs-md-ci-ransomware-email-20190529-story.html">Baltimore was hit with ransomware</a>, it cost the city an estimated 18.2M. Breaches are a lucrative business for hackers. </p>



<p>Keeping your data assets secure requires a multi-layered approach. Hardening your SQL Servers is a key part of that approach. So, what should you examine to help keep your SQL Servers Secure? </p>



<h2 class="wp-block-heading" id="h-securing-your-sql-server-environment">Securing your SQL Server environment</h2>



<p>To help protect your SQL Servers and secure your data, we recommend reviewing the following:</p>



<ol class="wp-block-list" type="1">
<li><strong>Physical Security</strong>. Limit physical and/or logical access to your SQL Servers.</li>



<li><strong>Operating System Security</strong>. Ensure that the Windows or Linux operating systems are secure and patched.</li>



<li><strong>Patch</strong>. Cumulative Updates and other patches should be applied not only for performance reasons, but for security updates as well.</li>



<li><strong>Services Accounts</strong>. Verify that the SQL Server service accounts have adequate restrictions, are not of Domain Admins, and change regularly. Consider using <a href="https://docs.microsoft.com/en-us/windows-server/security/group-managed-service-accounts/group-managed-service-accounts-overview" target="_blank" rel="noreferrer noopener">Group Managed Service Accounts</a> when possible. </li>



<li><strong>SQL Server Configuration Options</strong>. Limit configuration options such as CLR, Ole Automation, and xp_cmdshell on your systems. Don&#8217;t install any unneeded components such as SQL Server Reporting Services, or SQL Server Integration Services. </li>



<li><strong>Encryption</strong>. Consider encryption; data lost due to bypassed security controls may be useless if encrypted.</li>
</ol>



<h2 class="wp-block-heading" id="h-auditing-your-sql-servers">Auditing your SQL Servers</h2>



<p>On a regular basis, audit the following:</p>



<ol class="wp-block-list" type="1">
<li><strong>Roles and Permissions</strong>. Assess server level and database level role membership. Limit membership in the sysadmin role.</li>



<li><strong>Authentication</strong>. Use Windows Authentication where possible and enable Password Policies for SQL Server Logins. Enable failed login auditing.</li>



<li><strong>Strong sa Password</strong>. Ensure that the password used for the sa login if strong. Change it frequently. Consider even disabling the login.</li>



<li><strong>Backup Strategy</strong>. Review your backup strategies and regular perform test restores to lower systems, including <a href="https://theserogroup.com/sql-server/when-was-the-last-known-good-dbcc-checkdb-integrity-check/">running integrity checks</a>. Secure your backups. </li>
</ol>



<h2 class="wp-block-heading" id="h-consider-sql-audit">Consider SQL Audit</h2>



<p>To further protect your SQL Servers, consider implementing the built-in <a href="https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-ver15">SQL Audit</a> to record changes to important security facets such as additions to security role membership, new logins are created, and impersonation operations. If you have questions about SQL Audit, we have some demo scripts available to help you to get started. Feel free to <a href="https://theserogroup.com/#contact">contact us</a> for the scripts.</p>



<p>By reviewing and auditing your SQL Servers, you&#8217;ll have a greater sense of confidence that they are protected and secure, and you&#8217;ll help to take the guesswork out of managing them.</p>



<h2 class="wp-block-heading" id="h-other-considerations">Other Considerations</h2>



<p>Keeping your data protected and available is much broader than just the security aspect. You&#8217;ll want to also look at High Availability and Disaster Recovery options, </p>



<p>Here are some other post that may help.</p>



<ul class="wp-block-list">
<li><a href="https://theserogroup.com/sql-server/hadr-options-for-sql-server/">High Availability and Disaster Recovery in SQL Server</a></li>



<li><a href="https://theserogroup.com/sql-server/protect-your-sql-server-from-mrbminer-and-other-malware-attacks/">Protect Your SQL Server from MrbMiner and Other Malware Attacks</a></li>



<li><a href="https://theserogroup.com/consulting/azure-shared-disks-failover-clustered-instances/"></a><a href="https://theserogroup.com/sql-server/how-to-create-sql-server-2019-failover-clustered-instances-in-azure/">How to Create SQL Server 2019 Failover Clustered Instances in Azure</a></li>



<li><a href="https://theserogroup.com/sql-server/is-there-an-update-for-my-sql-server/">Is There an Update for My SQL Server?</a></li>



<li><a href="https://theserogroup.com/sql-server/is-my-sql-server-configured-properly/">Is My SQL Server Configured Properly?</a></li>
</ul>



<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 SERO Group helps organizations take the guesswork out of managing their SQL Servers? It’s easy and there is no obligation.&nbsp;</p>



<p><a href="https://theserogroup.com/#contact" 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/securing-your-sql-servers-what-should-you-audit/">Securing Your SQL Servers, What Should You Audit?</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://theserogroup.com/sql-server/securing-your-sql-servers-what-should-you-audit/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3395</post-id>	</item>
		<item>
		<title>When Was the Last Known Good DBCC CHECKDB Integrity Check?</title>
		<link>https://theserogroup.com/sql-server/when-was-the-last-known-good-dbcc-checkdb-integrity-check/</link>
					<comments>https://theserogroup.com/sql-server/when-was-the-last-known-good-dbcc-checkdb-integrity-check/#comments</comments>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Mon, 07 Dec 2020 19:24:12 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Data Security]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Consulting]]></category>
		<category><![CDATA[The Sero Group]]></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[Script Library]]></category>
		<category><![CDATA[Sero]]></category>
		<category><![CDATA[Sero Group]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Assessment]]></category>
		<category><![CDATA[SQL Audit]]></category>
		<category><![CDATA[SQL Consultant]]></category>
		<category><![CDATA[SQL Security]]></category>
		<category><![CDATA[SQL Server Consultant]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=3370</guid>

					<description><![CDATA[<p>Fortunately, DBCC CHECKDB will log each time it completes without finding any errors or corruption in the database. That's known as the Last Known Good date. Let's look at three ways you determine the Last Known Good date. We'll use a T-SQL query, a PowerShell command with dbatools, and the SQL Server Logs via Management Studio. </p>
<p>The post <a href="https://theserogroup.com/sql-server/when-was-the-last-known-good-dbcc-checkdb-integrity-check/">When Was the Last Known Good DBCC CHECKDB Integrity Check?</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Ensuring that databases are available when needed is the very foundation for everything a DBA does. Running DBCC CHECKDB, along with other regularly scheduled maintenance tasks, is important. But it&#8217;s not enough to just run an integrity check. You have to make sure that there are no errors in the output. So, how can you tell with then last known good DBCC CHECKDB was run? </p>



<h2 class="wp-block-heading" id="h-running-dbcc-checkdb">Running DBCC CHECKDB </h2>



<p>You&#8217;d be surprised at how many times in our <a href="https://theserogroup.com/sql-configuration-assessment">SQL Server Assessments</a> we discover that <a rel="noreferrer noopener" href="https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15" target="_blank">DBCC CHECKDB</a> hasn&#8217;t been run on a critical database. That&#8217;s a problem. </p>



<p>Running DBCC CHECKDB checks the physical and logical database objects and will help to spot corruption before too much time passes. As with many things, early detection is important. </p>



<p>So, let&#8217;s start there. To perform an integrity check, run the following command in a query window.</p>



<pre class="wp-block-code"><code>DBCC CHECKDB(master); </code></pre>



<p>Depending on a number of factors, including the size of the database, this may take some time to complete, so you&#8217;ll want to do this during periods of lesser activity. </p>



<p>When I ran this on the master database of my test container, it took about a second to run and I received 421 lines of output in the messages window. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="280" src="https://theserogroup.com/wp-content/uploads/2020/12/dbcc_output-1024x280.png" alt="DBCC CHECKDB output" class="wp-image-3375" srcset="https://theserogroup.com/wp-content/uploads/2020/12/dbcc_output-1024x280.png 1024w, https://theserogroup.com/wp-content/uploads/2020/12/dbcc_output-300x82.png 300w, https://theserogroup.com/wp-content/uploads/2020/12/dbcc_output-768x210.png 768w, https://theserogroup.com/wp-content/uploads/2020/12/dbcc_output.png 1296w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>At the very bottom of the output, it tells me that the command finished successfully and that I should check the output for error messages. So, I review all 421 lines, looking for any unexpected output. Bigger databases with more objects will take longer to run and will have more output to review.</p>



<p>So, is there a way to see if DBCC CHECKDB completed with no errors without having to review all of the output? </p>



<h2 class="wp-block-heading" id="h-when-did-dbcc-checkdb-last-complete-without-errors">When did DBCC CHECKDB last complete without errors?</h2>



<p>Fortunately, DBCC CHECKDB will log each time it completes without finding any errors or corruption in the database. That&#8217;s called the Last Known Good date. Let&#8217;s look at three ways you determine the Last Known Good date. We&#8217;ll use a T-SQL query, a PowerShell command with dbatools, and the SQL Server Logs via Management Studio. </p>



<h3 class="wp-block-heading" id="h-finding-the-last-known-good-date-using-t-sql">Finding the last known good date using T-SQL</h3>



<p>From a query window in either SQL Server Management Studio or Azure Data Studio, run the following command. Replace &#8216;master&#8217; with the database for which you&#8217;d like to find the Last Known Good date. </p>



<pre class="wp-block-code"><code>USE master; 
GO 

DBCC DBINFO() WITH TABLERESULTS;</code></pre>



<p>I ran it on my test container for a SQL Server 2019 instance and received 94 lines of output. Approximately half-way down, at line 51, you&#8217;ll see a line where the third column (called Field in the output) shows dbi_dbccLastKnownGood. That&#8217;s what you&#8217;re looking for. The forth column for that row, called Value, shows the date that DBCC CHECKDB last completed successfully. That&#8217;s the DBCC CHECKDB Last Known Good date.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="243" src="https://theserogroup.com/wp-content/uploads/2020/12/lastknowngooddbccheckdboutput-1024x243.png" alt="Last known good date for DBCC CHECKDB" class="wp-image-3377" srcset="https://theserogroup.com/wp-content/uploads/2020/12/lastknowngooddbccheckdboutput-1024x243.png 1024w, https://theserogroup.com/wp-content/uploads/2020/12/lastknowngooddbccheckdboutput-300x71.png 300w, https://theserogroup.com/wp-content/uploads/2020/12/lastknowngooddbccheckdboutput-768x182.png 768w, https://theserogroup.com/wp-content/uploads/2020/12/lastknowngooddbccheckdboutput.png 1484w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>That&#8217;s not a heavy lift, but it still takes some effort to sift through the results.</p>



<h3 class="wp-block-heading" id="h-finding-the-last-known-good-date-using-powershell-and-dbatools">Finding the last known good date using PowerShell and dbatools</h3>



<p>If you&#8217;re a fan of  PowerShell and <a href="https://dbatools.io/" target="_blank" rel="noreferrer noopener">dbatools</a>, you can use the combination to find DBCC CHECKDB Last Known Good Date using the following command where localhost is the SQL Server instance, sa is the credential I&#8217;m using to connect to the instance, and master is the name of the database I want to run the DBCC CHECKDB command on.</p>



<pre class="wp-block-code"><code>Get-DbaLastGoodCheckDb -SqlInstance localhost -SqlCredential sa -Database master</code></pre>



<p>The results are shown below. As you can see, the output shows some additional information about the database, including how many days it&#8217;s been since the Last Known Good. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="722" height="236" src="https://theserogroup.com/wp-content/uploads/2020/12/Get-DbaLastGoodCheckDb.png" alt="Last known good date for DBCC CHECKDB using powershell dbatools" class="wp-image-3378" srcset="https://theserogroup.com/wp-content/uploads/2020/12/Get-DbaLastGoodCheckDb.png 722w, https://theserogroup.com/wp-content/uploads/2020/12/Get-DbaLastGoodCheckDb-300x98.png 300w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>



<p>By the way, I can omit the -Database parameter and find the Last Known Good date for all databases on the instance.</p>



<pre class="wp-block-code"><code>Get-DbaLastGoodCheckDb -SqlInstance localhost -SqlCredential sa | Format-Table </code></pre>



<p>I&#8217;ve formatted the output in table format for ease of reading.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="141" src="https://theserogroup.com/wp-content/uploads/2020/12/checkdboutputforalldatabases-1024x141.png" alt="CheckDB output for all databases on a instance" class="wp-image-3388" srcset="https://theserogroup.com/wp-content/uploads/2020/12/checkdboutputforalldatabases-1024x141.png 1024w, https://theserogroup.com/wp-content/uploads/2020/12/checkdboutputforalldatabases-300x41.png 300w, https://theserogroup.com/wp-content/uploads/2020/12/checkdboutputforalldatabases-768x106.png 768w, https://theserogroup.com/wp-content/uploads/2020/12/checkdboutputforalldatabases.png 1188w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading" id="h-finding-the-last-known-good-date-using-the-sql-server-logs">Finding the last known good date using the SQL Server Logs</h3>



<p>DBCC CHECKDB logs information into the SQL Server ERROR LOG files. You can view the logs using Management Studio. Drill down into instance, Management, SQL Server Logs, and right-click on the Current log as shown below. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="392" height="410" src="https://theserogroup.com/wp-content/uploads/2020/12/SQLServererrorlogs.png" alt="View SQL Server Error Log " class="wp-image-3384" srcset="https://theserogroup.com/wp-content/uploads/2020/12/SQLServererrorlogs.png 392w, https://theserogroup.com/wp-content/uploads/2020/12/SQLServererrorlogs-287x300.png 287w" sizes="auto, (max-width: 392px) 100vw, 392px" /></figure>



<p>You&#8217;ll see the following window where your search for the DBCC CHECKDB output. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="840" height="620" src="https://theserogroup.com/wp-content/uploads/2020/12/DBCCCHECKDBinthelogs.png" alt="Finding the DBCC CHECKDB Last Known Good Date in the SQL Server Logs" class="wp-image-3379" srcset="https://theserogroup.com/wp-content/uploads/2020/12/DBCCCHECKDBinthelogs.png 840w, https://theserogroup.com/wp-content/uploads/2020/12/DBCCCHECKDBinthelogs-300x221.png 300w, https://theserogroup.com/wp-content/uploads/2020/12/DBCCCHECKDBinthelogs-768x567.png 768w" sizes="auto, (max-width: 840px) 100vw, 840px" /></figure>



<h2 class="wp-block-heading" id="h-what-if-dbcc-checkdb-has-never-been-run">What if DBCC CHECKDB has never been run?</h2>



<p>But, what will the output show if it&#8217;s never been run on a database?</p>



<p>Using the Get-DbaLastGoodCheckDb dbatools command in PowerShell, the LastGoodCheckDb value will be blank if the DBCC CHECKDB has never been run on this database, as in the BaseballData in the following example.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="678" height="228" src="https://theserogroup.com/wp-content/uploads/2020/12/DBCCCheckDBNeverRun.png" alt="DBCC CHECKDB has never been run PowerShell and dbatools" class="wp-image-3381" srcset="https://theserogroup.com/wp-content/uploads/2020/12/DBCCCheckDBNeverRun.png 678w, https://theserogroup.com/wp-content/uploads/2020/12/DBCCCheckDBNeverRun-300x101.png 300w" sizes="auto, (max-width: 678px) 100vw, 678px" /></figure>



<p>Using T-SQL, the Value column will show the default value for a date that is NULL in SQL Server, 1900-01-01 00:00:00.000. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="169" src="https://theserogroup.com/wp-content/uploads/2020/12/DBCCCheckDBNeverRunoutput-1024x169.png" alt="DBCC CHECKDB has never been run" class="wp-image-3380" srcset="https://theserogroup.com/wp-content/uploads/2020/12/DBCCCheckDBNeverRunoutput-1024x169.png 1024w, https://theserogroup.com/wp-content/uploads/2020/12/DBCCCheckDBNeverRunoutput-300x50.png 300w, https://theserogroup.com/wp-content/uploads/2020/12/DBCCCheckDBNeverRunoutput-768x127.png 768w, https://theserogroup.com/wp-content/uploads/2020/12/DBCCCheckDBNeverRunoutput.png 1478w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Of course if you find this to be the case, you should run DBCC CHECKDB as soon as you can. Again, it should be run during times of lesser activity since it takes some resources and time to complete.</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 SERO Group helps organizations take the guesswork out of managing their SQL Servers? It’s easy and there is no obligation.&nbsp;</p>



<p><a href="https://theserogroup.com/#contact" 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/when-was-the-last-known-good-dbcc-checkdb-integrity-check/">When Was the Last Known Good DBCC CHECKDB Integrity Check?</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://theserogroup.com/sql-server/when-was-the-last-known-good-dbcc-checkdb-integrity-check/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3370</post-id>	</item>
		<item>
		<title>3 Ways to Find Your SQL Server tempdb Data Files</title>
		<link>https://theserogroup.com/sql-server/3-ways-to-find-your-sql-server-tempdb-data-files/</link>
					<comments>https://theserogroup.com/sql-server/3-ways-to-find-your-sql-server-tempdb-data-files/#comments</comments>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Mon, 16 Nov 2020 20:24:12 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[Professional Development]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Consulting]]></category>
		<category><![CDATA[The Sero Group]]></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[Script Library]]></category>
		<category><![CDATA[Sero]]></category>
		<category><![CDATA[Sero Group]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Assessment]]></category>
		<category><![CDATA[SQL Audit]]></category>
		<category><![CDATA[SQL Consultant]]></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=3332</guid>

					<description><![CDATA[<p>Checking the number of tempdb data files is straightforward. Here are three easy ways: one graphical, one T-SQL, and one PowerShell, so you can use your tools of choice. </p>
<p>The post <a href="https://theserogroup.com/sql-server/3-ways-to-find-your-sql-server-tempdb-data-files/">3 Ways to Find Your SQL Server tempdb Data Files</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>You’ve just inherited a new-to-you SQL Server. Maybe someone else set it up a couple of years ago? Maybe a vendor did the install for you? Or maybe you installed but you’ve slept since then? Or, as in my case, you’ve downloaded a SQL Server container and you’re not sure how it’s configured. Anyway, now you’d like to see if it’s configured properly. And one of the things you’d like to check is the number of SQL Server tempdb data files it has. </p>



<p>When Microsoft SQL Server is installed, by default one SQL Server tempdb file is defined. For many systems that may be enough. But, over time, as the database sizes grow, as the number of users increases, and type of queries grow in complexity, one tempdb file may not be able to handle the load. It may become a source for contention. </p>



<h2 class="wp-block-heading" id="h-how-to-find-your-tempdb-data-files">How to find your tempdb data files</h2>



<p>Checking the number of tempdb data files is straightforward. Here are three easy ways: one graphical, one T-SQL, and one PowerShell, so you can use your tools of choice. </p>



<h3 class="wp-block-heading" id="h-list-tempdb-data-files-using-database-properties">List tempdb data files using database properties</h3>



<p>Perhaps the most frequently used way to check the number of tempdb data files for a SQL Server is to view the Database Properties. This can be done using either SQL Server Management Studio (SSMS) or Azure Data Studio (ADS). I’m using ADS in images below. </p>



<p>Drill down into the SQL Server instance, Databases, System Databases, and right click on the tempdb database. Select Properties in the pop-up menu.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="862" height="518" src="https://theserogroup.com/wp-content/uploads/2020/11/tempdb_properties.png" alt="SQL Server tempdb properties" class="wp-image-3348" srcset="https://theserogroup.com/wp-content/uploads/2020/11/tempdb_properties.png 862w, https://theserogroup.com/wp-content/uploads/2020/11/tempdb_properties-300x180.png 300w, https://theserogroup.com/wp-content/uploads/2020/11/tempdb_properties-768x462.png 768w" sizes="auto, (max-width: 862px) 100vw, 862px" /></figure>



<p>The Database Properties window will open. As you can see in the image below, the SQL Server 2019 container I downloaded is configured with four tempdb data files. That’s not bad, although the size and auto growth settings are concerning. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="678" height="570" src="https://theserogroup.com/wp-content/uploads/2020/11/tempdb_properties_window.png" alt="SQL Server tempdb properties window" class="wp-image-3349" srcset="https://theserogroup.com/wp-content/uploads/2020/11/tempdb_properties_window.png 678w, https://theserogroup.com/wp-content/uploads/2020/11/tempdb_properties_window-300x252.png 300w" sizes="auto, (max-width: 678px) 100vw, 678px" /></figure>



<p>Of course, while you’re in the Properties window you can adjust the number, sizes, etc, of the data files. Your SQL Server should be restarted afterward. </p>



<h3 class="wp-block-heading" id="h-list-tempdb-data-files-using-t-sql">List tempdb data files using T-SQL</h3>



<p>As with most everything you can do using point-and-click in SSMS or ADS, the same can be accomplished using Transact-SQL. Sometimes, it’s just nice to have a library of commonly used scripts on hand so you can quickly, easily, and consistently run them.  </p>



<p>In this case, the query below can be used to check the number of tempdb data files currently defined. </p>



<pre class="wp-block-code"><code>SELECT  file_id, 
        type_desc, 
        name, 
        physical_name, 
        &#91;size],
        state_desc
FROM    tempdb.sys.database_files 
WHERE   type = 0 ; </code></pre>



<p>Here are the results. Of course, you can add additional output columns to see other properties as well, such as max_size, growth, and is_percent_growth. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="600" height="166" src="https://theserogroup.com/wp-content/uploads/2020/11/tempdb_sql.png" alt="SQL Server tempdb settings from query" class="wp-image-3347" srcset="https://theserogroup.com/wp-content/uploads/2020/11/tempdb_sql.png 600w, https://theserogroup.com/wp-content/uploads/2020/11/tempdb_sql-300x83.png 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></figure>



<h3 class="wp-block-heading" id="h-list-tempdb-data-files-using-powershell-and-dbatools">List tempdb data files using PowerShell and dbatools</h3>



<p>Experienced SQL Server DBAs often make extensive use of the <a href="https://dbatools.io/" target="_blank" rel="noreferrer noopener">dbatools</a> PowerShell module. You get all the flexibility and capabilities of PowerShell combined with the ability to administer most every aspect of your SQL Server. </p>



<p>In the code below, I&#8217;m using the Get-DbaDbFile command. The command is fully documented <a href="https://docs.dbatools.io/#Get-DbaDbFile" target="_blank" rel="noreferrer noopener">here</a>. I&#8217;m connecting to the localhost using the -SqlInstance parameter and authenticating as sa using the -SqlCredential parameter. I will be prompted for the password each time. The -Database parameter allows me to find the datafiles for a specific database. I&#8217;m then piping the output to table format for readability.</p>



<pre class="wp-block-code"><code>Get-DbaDbFile -SqlInstance localhost -SqlCredential sa -Database tempdb |Format-Table</code></pre>



<p>Here&#8217;s the output from the Get-DbaDbFile command.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="252" src="https://theserogroup.com/wp-content/uploads/2020/11/tempdb_powershell_dbatools-1024x252.png" alt="SQL Server tempdb settings from powershell with dbatools" class="wp-image-3350" srcset="https://theserogroup.com/wp-content/uploads/2020/11/tempdb_powershell_dbatools-1024x252.png 1024w, https://theserogroup.com/wp-content/uploads/2020/11/tempdb_powershell_dbatools-300x74.png 300w, https://theserogroup.com/wp-content/uploads/2020/11/tempdb_powershell_dbatools-768x189.png 768w, https://theserogroup.com/wp-content/uploads/2020/11/tempdb_powershell_dbatools-1536x378.png 1536w, https://theserogroup.com/wp-content/uploads/2020/11/tempdb_powershell_dbatools.png 1597w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="h-want-to-know-more-about-your-sql-server-configuration">Want to know more about your SQL Server configuration?</h2>



<p> Here are few other posts for SQL Server configuration settings and tempdb that may be helpful. </p>



<ul class="wp-block-list">
<li><a href="https://theserogroup.com/sql-server/is-my-sql-server-configured-properly/">Is My SQL Server Configured Properly?</a>  </li>



<li><a href="https://theserogroup.com/sql-server/how-many-tempdb-data-files-should-my-sql-server-have/">How Many tempdb Data Files Should My SQL Server Have?</a>  </li>



<li><a href="https://theserogroup.com/sql-server/why-9-out-of-10-sql-servers-arent-configured-with-best-practices/">Why 9 Out of 10 SQL Servers Aren’t Configured with Best Practices</a></li>
</ul>



<p>[EDIT Oct 5, 2021] &#8211; Also see <a href="https://theserogroup.com/dba/how-to-configure-sql-server-tempdb/">How to Configure SQL Server tempdb?</a> for other tempdb configuration settings that can affect performance.  </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 SERO Group helps organizations take the guesswork out of managing their SQL Servers? It’s easy and there is no obligation.&nbsp;</p>



<p><a href="https://theserogroup.com/#contact" 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/3-ways-to-find-your-sql-server-tempdb-data-files/">3 Ways to Find Your SQL Server tempdb Data Files</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://theserogroup.com/sql-server/3-ways-to-find-your-sql-server-tempdb-data-files/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3332</post-id>	</item>
		<item>
		<title>High Availability and Disaster Recovery in SQL Server</title>
		<link>https://theserogroup.com/sql-server/hadr-options-for-sql-server/</link>
					<comments>https://theserogroup.com/sql-server/hadr-options-for-sql-server/#comments</comments>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Thu, 05 Nov 2020 16:00:00 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Data Security]]></category>
		<category><![CDATA[DBA]]></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[Sero]]></category>
		<category><![CDATA[Sero Group]]></category>
		<category><![CDATA[Shared Disks]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Assessment]]></category>
		<category><![CDATA[SQL Audit]]></category>
		<category><![CDATA[SQL Consultant]]></category>
		<category><![CDATA[SQL Security]]></category>
		<category><![CDATA[SQL Server Consultant]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=3315</guid>

					<description><![CDATA[<p>We&#8217;re often asked about SQL Server High Availability and Disaster Recovery (HADR) options to help customers protect their data and improve their uptime. No surprise there. When a SQL Server provides a critical component of your daily operations you need those databases to be available. Simply put, when a user needs information from the database&#8230; <br /> <a class="read-more" href="https://theserogroup.com/sql-server/hadr-options-for-sql-server/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/sql-server/hadr-options-for-sql-server/">High Availability and Disaster Recovery in SQL Server</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>We&#8217;re often asked about SQL Server High Availability and Disaster Recovery (HADR) options to help customers protect their data and improve their uptime. No surprise there. When a SQL Server provides a critical component of your daily operations you need those databases to be available. Simply put, when a user needs information from the database application, whether it&#8217;s an operational, financial, customer relationship management (CRM), or some other system, you need the application and the database to be available. </p>



<p>You also need to be able to recover from an unexpected disaster quickly. Whether due to corruption, theft, or a natural disaster, you need to be able to recover the data and database systems quickly. (A process that should be clearly documented and periodically practiced.)</p>



<p>The last thing you want is for your business to grind to a halt while the IT team attempts to figure out what happened and how to respond. Your customers will be waiting while your employees are idled despite wanting to do their jobs. Running a database system without considering HADR is like walking a tightrope without a net. </p>



<h2 class="wp-block-heading" id="h-the-cost-of-unplanned-downtime">The Cost of Unplanned Downtime</h2>



<p>Unplanned downtime costs companies an average of $5,600 per minute according to a <a rel="noreferrer noopener" href="https://blogs.gartner.com/andrew-lerner/2014/07/16/the-cost-of-downtime/" target="_blank">2014 Gartner study</a>. A more recent 2016 study from <a rel="noreferrer noopener" href="https://www.ponemon.org/blog/2016-cost-of-data-center-outages" target="_blank">the Ponemon Institute</a> put the figure at $8,850 per minute. That&#8217;s over a half million dollars an hour of lost revenue, decreased productivity, and incident response costs. Other studies suggest that many unplanned outages involved database servers. Ouch!</p>



<p>So, it goes without saying that good HADR is important, but it&#8217;s not a replacement for performing Daily Health Checks and actively monitoring the SQL Server to ensure their health.&nbsp;</p>



<h2 class="wp-block-heading" id="h-4-high-availability-and-disaster-recovery-options-in-sql-server">4 High Availability and Disaster Recovery Options in SQL Server</h2>



<p>Although High Availability and Disaster Recovery is a much broader topic than the database servers, the following SQL Server options should be considered as part of the larger discussion.</p>



<h3 class="wp-block-heading" id="h-1-sql-backup-and-restore">1. SQL <strong>Backup and Restore</strong></h3>



<p>Database and log backups are the foundation of any HADR implementation. It&#8217;s the basic blocking and tackling of any database implementation. Every SQL Server should be backed up periodically in addition to any other HADR solutions you may have implemented. </p>



<p>We recommended using <a href="https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/back-up-and-restore-of-sql-server-databases?view=sql-server-ver15" target="_blank" rel="noreferrer noopener">native SQL Server backups</a>. Of course, to recover from a catastrophic failure, you&#8217;ll have to (re)create a new SQL Server system to restore the backups. Taking frequent snapshots of the virtual server can help with the system recovery but those are no substitute for true database backups. </p>



<p>Backing up is important. But it&#8217;s really the ability to restore that important. Periodically restore selected databases to another system and run integrity checks on those databases. Document the process so that in a true disaster recovery scenario, you&#8217;ll have a proven protocol. </p>



<h3 class="wp-block-heading" id="h-2-logshipping-in-sql-server">2. <strong>Logshipping</strong> in SQL Server</h3>



<p><a href="https://docs.microsoft.com/en-us/sql/database-engine/log-shipping/about-log-shipping-sql-server?view=sql-server-ver15" target="_blank" rel="noreferrer noopener">Log shipping</a> leverages the native SQL Server log backup processes and creates a more controlled and automated recovery story. By automatically sending transaction log backups to a secondary SQL Server instance, you&#8217;ll have a standby server available with as little as a few minutes of lost data. That&#8217;s good news.</p>



<p>Should a disaster strike, client applications and other systems will have to be adjusted to point to the new SQL Server instance. This typically requires manual intervention and will not be seamless for the end users. They&#8217;ll know that a failure has occurred, however, recovery times are typically faster and the recovery points more granular than with an ordinary backup approach. </p>



<h3 class="wp-block-heading" id="h-3-failover-clustered-instances-fcis">3. Failover Clustered Instances (FCIs)</h3>



<p><a href="https://docs.microsoft.com/en-us/sql/sql-server/failover-clusters/windows/always-on-failover-cluster-instances-sql-server?view=sql-server-ver15" target="_blank" rel="noreferrer noopener">Failover Clustered Instances</a> takes your HADR game up several levels. Leveraging Windows Server Failover Clusters (WSFC), a single instance of SQL Server can be installed across multiple WSFC nodes. Should one of the nodes experience a hardware or software failure, key services such as SQL Server, are automatically shifted to another node. </p>



<p>With FCIs, SQL Server appears to client applications as one instance running on one Windows Server. Since services are automatically shifted to another node during an unexpected failure or planned maintenance cycle, client applications are automatically redirected to the active node. They typically do not notice any disruption in service. </p>



<p>The FCI is online as long as its underlying WSFC cluster is in good quorum health. This instance level redundancy provides substantially reduced potential for noticeable downtime for clients.</p>



<h3 class="wp-block-heading" id="h-4-availability-groups-ags">4. <strong>Availability Groups</strong> (AGs)</h3>



<p>With <a href="https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/overview-of-always-on-availability-groups-sql-server?view=sql-server-ver15" target="_blank" rel="noreferrer noopener">Always On Availability Groups</a>, transaction logs are synchronized from the primary replica to one or more secondary replicas. Should the primary replica become unavailable, either due to a failure or scheduled maintenance, a secondary replica transitions to the primary role. Clients, which connect to a listener, are unaware of any changes to the actual location of the primary replica.</p>



<p>Availability Groups further decrease the likelihood of a noticeably disruptive event. </p>



<h2 class="wp-block-heading" id="h-looking-for-additional-hadr-information">Looking for Additional HADR Information?</h2>



<p>Of course, this is a high-level overview of some options for High Availability and Disaster Recovery options in SQL Server. There are many other factors to consider as well, including backup methodologies, cloud strategies, and virtualization techniques. You can even implement Distributed Availability Groups or Failover Clustered Instances across multiple subnets. These are topics for another post. </p>



<p>Additionally, you&#8217;ll need to fully understand the business requirements of your stakeholders for Recovery Point Objectives (RPO) and Recovery Time Objectives (RTO). The approaches mentioned here obviously come with varying levels of RTO and RPO capabilities and with different licensing price points.</p>



<p>If you&#8217;re looking for additional information, check out Microsoft&#8217;s <a rel="noreferrer noopener" href="https://docs.microsoft.com/en-us/sql/database-engine/sql-server-business-continuity-dr?view=sql-server-ver15" target="_blank">Business Continuity and Database Recovery</a> on SQL Docs. Additionally Luke Campbell (<a href="https://twitter.com/Luke7621" target="_blank" rel="noreferrer noopener">@luke7621</a>) has a series on <a href="https://theserogroup.com/sql-server/how-to-create-sql-server-2019-failover-clustered-instances-in-azure/">Creating Failover Clustered Instances in Azure</a>. </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 SERO Group helps organizations take the guesswork out of managing their SQL Servers? It’s easy and there is no obligation.&nbsp;</p>



<p><a href="https://theserogroup.com/#contact" 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/hadr-options-for-sql-server/">High Availability and Disaster Recovery in SQL Server</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://theserogroup.com/sql-server/hadr-options-for-sql-server/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3315</post-id>	</item>
		<item>
		<title>Should I Upgrade SQL Servers that Are Out of Support?</title>
		<link>https://theserogroup.com/sql-server/should-i-upgrade-sql-servers-that-are-out-of-support/</link>
					<comments>https://theserogroup.com/sql-server/should-i-upgrade-sql-servers-that-are-out-of-support/#comments</comments>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Tue, 27 Oct 2020 16:19:44 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Data Security]]></category>
		<category><![CDATA[DBA]]></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[Sero]]></category>
		<category><![CDATA[Sero Group]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Assessment]]></category>
		<category><![CDATA[SQL Audit]]></category>
		<category><![CDATA[SQL Consultant]]></category>
		<category><![CDATA[SQL Security]]></category>
		<category><![CDATA[SQL Server Consultant]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<category><![CDATA[Vidoes]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=3296</guid>

					<description><![CDATA[<p>Do All SQL Servers Need to Be Upgraded? Running production systems on a platform that is no longer supported by the vendor is worrisome. If something goes wrong, you&#8217;ll no longer be able to call the vendor and receive technical support. But worse, you&#8217;ll no longer release updates, fixes, security patches, etc, for the out&#8230; <br /> <a class="read-more" href="https://theserogroup.com/sql-server/should-i-upgrade-sql-servers-that-are-out-of-support/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/sql-server/should-i-upgrade-sql-servers-that-are-out-of-support/">Should I Upgrade SQL Servers that Are Out of Support?</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading" id="h-do-all-sql-servers-need-to-be-upgraded">Do All SQL Servers Need to Be Upgraded?</h1>



<p>Running production systems on a platform that is no longer supported by the vendor is worrisome. If something goes wrong, you&#8217;ll no longer be able to call the vendor and receive technical support. But worse, you&#8217;ll no longer release updates, fixes, security patches, etc, for the out of support version. This could leave your production systems vulnerable to exploits and unrecoverable crashes. But this begs the question &#8220;Should I Upgrade All SQL Servers that Are Out of Support?&#8221;</p>



<h2 class="wp-block-heading" id="h-is-my-sql-server-out-of-support">Is My SQL Server Out of Support?</h2>



<p>First off, let&#8217;s answer the question of &#8220;Is my SQL Server out of support?&#8221; Microsoft typically supports their products for 10 years. The first five years are Main Stream Support, which includes incident support (either paid or no-charge depending on circumstances and cause) hotfixes, updates, etc. </p>



<p>Then for the next five years, the product will be in Extended Support. In that level of support, Microsoft will continue to provide some updates and hotfixes to the product, especially those that affect security. Paid support is still available. </p>



<p>You can check to see where your version of SQL Server stands by going to the <a href="https://docs.microsoft.com/en-us/lifecycle/products/?products=sql-server" target="_blank" rel="noreferrer noopener">Microsoft Life Cycle page</a>. Also see <a href="https://theserogroup.com/2020/03/31/is-there-an-update-for-my-sql-server/">Is There An Update for My SQL Server?</a></p>



<h2 class="wp-block-heading" id="h-but-should-i-upgrade-sql-servers-that-are-out-of-support">But, Should I Upgrade SQL Servers that Are Out of Support?</h2>



<p>Ok, you&#8217;ve checked and your SQL Server is no longer in Mainstream Support. It&#8217;s not what you wanted to find, but it&#8217;s not the end of the world, either. You&#8217;ve still got some time in the Extended Support world to make some plans. </p>



<p>But what if your SQL Server is out of Extended Support. Should you immediately drop everything and upgrade? Sure, in an ideal world where both money and time are a-plenty. But, of course, none of us live in that world.</p>



<p>So, do you prioritize upgrading all of your SQL Servers systems?</p>



<p>Well, yes. And no.  </p>



<p>As with many questions in technology, the real answer is &#8220;it depends.&#8221; This short video explains some of the options and criteria for answering that question. This post, <a href="https://theserogroup.com/2019/07/09/4-options-now-that-your-sql-server-2008-is-out-of-support/">4 Options Now That Your SQL Server 2008 Is Out of Support</a>, may help as well. </p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class='embed-container'><iframe loading="lazy" title="4 Options for Your Old SQL Servers" width="1920" height="1080" src="https://www.youtube.com/embed/7y_Q4VFBskY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
</div></figure>



<p>Although, running production systems on versions that are out of date is very concerning and <a href="https://theserogroup.com/2018/09/06/why-upgrade-my-sql-server-2008-servers/">can be risky</a>, many factors will ultimately influence your decision on whether you should upgrade all of your SQL Servers. </p>



<p>Running a vintage car can fun and make for a great hobby. But running a vintage version of SQL Server can be dangerous. </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 SERO Group helps organizations take the guesswork out of managing their SQL Servers? It’s easy and there is no obligation.&nbsp;</p>



<p><a href="https://theserogroup.com/#contact" 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/should-i-upgrade-sql-servers-that-are-out-of-support/">Should I Upgrade SQL Servers that Are Out of Support?</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://theserogroup.com/sql-server/should-i-upgrade-sql-servers-that-are-out-of-support/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3296</post-id>	</item>
		<item>
		<title>Identify Disk I/O Performance Issues for Your SQL Server Using DiskSpd</title>
		<link>https://theserogroup.com/sql-server-consulting/identify-disk-i-o-performance-issues-for-your-sql-server-using-diskspd/</link>
					<comments>https://theserogroup.com/sql-server-consulting/identify-disk-i-o-performance-issues-for-your-sql-server-using-diskspd/#comments</comments>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Wed, 21 Oct 2020 15:04:21 +0000</pubDate>
				<category><![CDATA[SQL Server Consulting]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[IT Manager]]></category>
		<category><![CDATA[Script Library]]></category>
		<category><![CDATA[Shared Disks]]></category>
		<category><![CDATA[SQL Assessment]]></category>
		<category><![CDATA[SQL Audit]]></category>
		<category><![CDATA[SQL Consulting]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<category><![CDATA[Video]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=3245</guid>

					<description><![CDATA[<p>&#8220;We need faster storage.” Sound familiar? Or what about &#8220;No, the storage is good; we need to tune the database.&#8221; Often teams will have very different opinions about the root cause of a performance issue. Microsoft&#8217;s free DiskSpd utility can help identify disk I/O performance issues for your SQL server systems. Here&#8217;s a short introduction&#8230; <br /> <a class="read-more" href="https://theserogroup.com/sql-server-consulting/identify-disk-i-o-performance-issues-for-your-sql-server-using-diskspd/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/sql-server-consulting/identify-disk-i-o-performance-issues-for-your-sql-server-using-diskspd/">Identify Disk I/O Performance Issues for Your SQL Server Using DiskSpd</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>&#8220;We need faster storage.” Sound familiar? Or what about &#8220;No, the storage is good; we need to tune the database.&#8221; Often teams will have very different opinions about the root cause of a performance issue. Microsoft&#8217;s free DiskSpd utility can help identify disk I/O performance issues for your SQL server systems. </p>



<p>Here&#8217;s a short introduction video for how DiskSpd can be used to gather the necessary performance metrics without using the SQL Server Dynamic Management Views (DMVs). Having a way to support your case without using SQL Server to capture these metrics can sometimes be helpful. </p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class='embed-container'><iframe loading="lazy" title="DiskSpd Can Help Identify Disk I/O Performance Issues for Your SQL Server Systems" width="1920" height="1080" src="https://www.youtube.com/embed/_fkYltxe6tc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
</div></figure>



<h3 class="wp-block-heading">Using DiskSpd on Your SQL Server System</h3>



<p>Using Diskspd we can benchmark the raw performance of storage without relying on SQL Server DMV information at all. It’ll report on write and read latency, on sequential and random disk activity. It’s very granular and can be extremely insightful.</p>



<p>For example, I downloaded the utility and ran it on my laptop using the following command. </p>



<pre class="wp-block-code"><code>Diskspd.exe -b8K -d60 -h -L -o2 -t4 -r -w30 -c100M c:\test\io.dat > c:\test\output.txt</code></pre>



<p>In this simple case, I set the block size to 8K using the -b parameter, ran the test for 60 seconds using the -d parameter, disabled hardware and software caching with the -h parameter, measured latency statistics with -L, used 2 overlapped IOs with the -o parameter, created 4 threads per target with the -t parameter, defined a workload of random input/output with the -r parameter, defined 30% of the I/O to be writes with the -w parameter, had the utility create a 100MB test file at c:\test\io.dat, and configured the output to be written to c:\test\output.txt. </p>



<p>There are many more parameters available in DiskSpd. For a complete list, run DiskSpd -?. </p>



<h3 class="wp-block-heading">Interpreting the DiskSpd Disk I/O Performance Results</h3>



<p>In my case, I received the following results in the c:\test\output.txt file. Keep in mind this is on a laptop and not a production SQL Server. </p>



<pre class="wp-block-code"><code>
Command Line: Diskspd.exe -b8K -d60 -h -L -o2 -t4 -r -w30 -c100M c:\test\io.dat

Input parameters:

	timespan:   1
	-------------
	duration: 60s
	warm up time: 5s
	cool down time: 0s
	measuring latency
	random seed: 0
	path: 'c:\test\io.dat'
		think time: 0ms
		burst size: 0
		software cache disabled
		hardware write cache disabled, writethrough on
		performing mix test (read/write ratio: 70/30)
		block size: 8192
		using random I/O (alignment: 8192)
		number of outstanding I/O operations: 2
		thread stride size: 0
		threads per file: 4
		using I/O Completion Ports
		IO priority: normal

System information:

	computer name: DESKTOP-K9DJS56
	start time: 2020/10/21 14:18:01 UTC

Results for timespan 1:
*******************************************************************************

actual test time:	60.00s
thread count:		4
proc count:		4

CPU |  Usage |  User  |  Kernel |  Idle
-------------------------------------------
   0|  71.35%|  13.26%|   58.10%|  28.65%
   1|  66.28%|  15.23%|   51.04%|  33.72%
   2|  70.03%|  13.41%|   56.61%|  29.97%
   3|  68.15%|  17.73%|   50.42%|  31.85%
-------------------------------------------
avg.|  68.95%|  14.91%|   54.04%|  31.05%

Total IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
-----------------------------------------------------------------------------------------------------
     0 |      4398579712 |       536936 |      69.91 |    8948.90 |    0.222 |     0.740 | c:\test\io.dat (100MiB)
     1 |      4435599360 |       541455 |      70.50 |    9024.22 |    0.221 |     0.739 | c:\test\io.dat (100MiB)
     2 |      4433772544 |       541232 |      70.47 |    9020.50 |    0.221 |     0.757 | c:\test\io.dat (100MiB)
     3 |      4367548416 |       533148 |      69.42 |    8885.77 |    0.224 |     0.787 | c:\test\io.dat (100MiB)
-----------------------------------------------------------------------------------------------------
total:       17635500032 |      2152771 |     280.31 |   35879.40 |    0.222 |     0.756

Read IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
-----------------------------------------------------------------------------------------------------
     0 |      3077742592 |       375701 |      48.92 |    6261.66 |    0.256 |     0.669 | c:\test\io.dat (100MiB)
     1 |      3101097984 |       378552 |      49.29 |    6309.18 |    0.256 |     0.751 | c:\test\io.dat (100MiB)
     2 |      3100819456 |       378518 |      49.29 |    6308.61 |    0.254 |     0.606 | c:\test\io.dat (100MiB)
     3 |      3055476736 |       372983 |      48.57 |    6216.36 |    0.258 |     0.715 | c:\test\io.dat (100MiB)
-----------------------------------------------------------------------------------------------------
total:       12335136768 |      1505754 |     196.06 |   25095.82 |    0.256 |     0.688

Write IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
-----------------------------------------------------------------------------------------------------
     0 |      1320837120 |       161235 |      20.99 |    2687.24 |    0.144 |     0.879 | c:\test\io.dat (100MiB)
     1 |      1334501376 |       162903 |      21.21 |    2715.04 |    0.139 |     0.702 | c:\test\io.dat (100MiB)
     2 |      1332953088 |       162714 |      21.19 |    2711.89 |    0.144 |     1.023 | c:\test\io.dat (100MiB)
     3 |      1312071680 |       160165 |      20.85 |    2669.41 |    0.145 |     0.928 | c:\test\io.dat (100MiB)
-----------------------------------------------------------------------------------------------------
total:        5300363264 |       647017 |      84.25 |   10783.58 |    0.143 |     0.890



total:
  %-ile |  Read (ms) | Write (ms) | Total (ms)
----------------------------------------------
    min |      0.054 |      0.048 |      0.048
   25th |      0.168 |      0.082 |      0.121
   50th |      0.192 |      0.095 |      0.174
   75th |      0.228 |      0.113 |      0.211
   90th |      0.337 |      0.144 |      0.292
   95th |      0.557 |      0.203 |      0.454
   99th |      1.394 |      0.610 |      1.291
3-nines |      4.510 |     14.778 |      5.577
4-nines |     18.031 |     26.059 |     20.629
5-nines |    117.426 |    117.574 |    117.502
6-nines |    153.091 |    161.708 |    153.091
7-nines |    162.048 |    161.708 |    162.048
8-nines |    162.048 |    161.708 |    162.048
9-nines |    162.048 |    161.708 |    162.048
    max |    162.048 |    161.708 |    162.048
</code></pre>



<p>As you can see, DiskSpd creates quite a bit of information.</p>



<p>According to the results, the test consumed nearly 69% of the CPU resources. As for the latency, the last section shows the metrics broken down by percentiles. In my case, the minimum read latency was 0.054 ms and the best write latency I could achieve was 0.048 ms. The maximum latencies were read 162.048 ms and write 161.708 ms. At the 50th percentile, my system had a read latency of 0.192 ms and a write latency of 0.095 ms.</p>



<p>This output can help you determine whether the disk I/O subsystem is delivering the performance your SQL Server system needs.</p>



<h3 class="wp-block-heading">Where to Get DiskSpd</h3>



<p>DiskSpd is available on <a href="https://github.com/microsoft/diskspd" target="_blank" rel="noreferrer noopener">GitHub</a>, and additional how-to documentation can be found on TechNet <a href="https://gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223" target="_blank" rel="noreferrer noopener">here</a>. </p>



<p>For other checks to run on your SQL Server system, check out <a href="https://theserogroup.com/2019/08/06/is-my-sql-server-configured-properly/">Is My SQL Server Configured Properly</a>.</p>
<p>The post <a href="https://theserogroup.com/sql-server-consulting/identify-disk-i-o-performance-issues-for-your-sql-server-using-diskspd/">Identify Disk I/O Performance Issues for Your SQL Server Using DiskSpd</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://theserogroup.com/sql-server-consulting/identify-disk-i-o-performance-issues-for-your-sql-server-using-diskspd/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3245</post-id>	</item>
	</channel>
</rss>
