<?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>Azure Archives - The SERO Group</title>
	<atom:link href="https://theserogroup.com/category/azure/feed/" rel="self" type="application/rss+xml" />
	<link>https://theserogroup.com/category/azure/</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>Azure Archives - The SERO Group</title>
	<link>https://theserogroup.com/category/azure/</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>Is your SQL Server Code Ready for Azure?</title>
		<link>https://theserogroup.com/azure/azure-sql-migration-code/</link>
		
		<dc:creator><![CDATA[Natasha Collins]]></dc:creator>
		<pubDate>Wed, 26 Jun 2024 12:00:00 +0000</pubDate>
				<category><![CDATA[Azure]]></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[Serogroup]]></category>
		<category><![CDATA[Shared Disks]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Consultant]]></category>
		<category><![CDATA[SQL Security]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Consultant]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<category><![CDATA[TempDB]]></category>
		<category><![CDATA[The Sero Group]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=6078</guid>

					<description><![CDATA[<p>I recently had a discussion with a client that turned to the question of SQL Server code compatibility with Azure SQL Database. We were designing a new pipeline for their on-premises SQL environment, and they mentioned their abandoned cloud migration effort from a few years earlier. The business ended up pausing this effort because of&#8230; <br /> <a class="read-more" href="https://theserogroup.com/azure/azure-sql-migration-code/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/azure/azure-sql-migration-code/">Is your SQL Server Code Ready for Azure?</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>I recently had a discussion with a client that turned to the question of SQL Server code compatibility with Azure SQL Database. We were designing a new pipeline for their on-premises SQL environment, and they mentioned their abandoned cloud migration effort from a few years earlier. The business ended up pausing this effort because of code incompatibilities that would have required an unexpected amount of re-engineering. After that experience, they wanted to ensure that any new pipeline development was done while being mindful of a possible future migration.</p>



<h2 class="wp-block-heading" id="h-the-risks-of-delaying-code-analysis">The risks of delaying code analysis</h2>



<p>Delaying an analysis of code compatibility is surprisingly common for businesses undertaking a migration to the cloud. Early cost-benefit analyses often address the hardware and infrastructure changes involved but can sometimes neglect to consider the impact of required code changes.</p>



<p>Infrastructure concerns are critical considerations when evaluating a move to the cloud. However, limiting our analysis to these considerations may hide the costs and risks associated with any necessary re-engineering.&nbsp;Unfortunately, it is very possible for these hidden risks and costs to turn out to be deal-breakers. To avoid a sticky situation, learn about these factors up front before investing time and energy into migration preparations.</p>



<h2 class="wp-block-heading" id="h-azure-options-sql-vm-vs-managed-instance-vs-sql-database">Azure options: SQL VM vs. Managed Instance vs. SQL Database</h2>



<p>It is important to note that a “move to the cloud” can come in many forms. Some examples are migrations to a hybrid environment, “lift and shift” moves to Azure-hosted VMs or SQL Managed Instances (SQL MI), or full or partial migrations to multi-tenant Azure SQL Databases (SQL DB). You will need to know what type of migration is being considered before evaluating code changes since the different options have different levels of compatibility with SQL Server.<br><br>Here&#8217;s a quick breakdown of the options in Azure with SQL Server compatibility.</p>



<h3 class="wp-block-heading">IaaS Option</h3>



<p><a href="https://learn.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/sql-server-on-azure-vm-iaas-what-is-overview?view=azuresql">SQL Server on an Azure VM</a><br>Since this option constitutes a full installation of SQL Server on a dedicated Azure-hosted virtual machine, there are no code or feature incompatibilities to be concerned about. Azure SQL VMs achieve complete feature parity with on-premises SQL environments. With this option, the primary difference between the Azure implementation and an on-premises installation is the management of the underlying server.</p>



<h3 class="wp-block-heading">PaaS Options</h3>



<p><a href="https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/sql-managed-instance-paas-overview?view=azuresql">Azure SQL Managed Instance</a><br>SQL MI boasts “near 100% compatibility” with the latest Enterprise Edition of the SQL Server database engine, while still including automated backups, patching, and high availability of the SQL environment. This option uses a single-tenant database engine intended to enable the least disruptive migration from an on-premises or Azure-hosted SQL Server instance to a full PaaS environment. This means that many of the incompatibilities that exist with Azure SQL Database are minimized or eliminated with Azure SQL MI. However, functionality that requires access to the file system or OS is still impacted.</p>



<p><a href="https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/sql-managed-instance-paas-overview?view=azuresql">Azure SQL Database</a><br>Azure SQL DB is another fully managed PaaS option consisting of a multi-tenant database engine that is optimized for cloud-native applications. While this option is generally less expensive than Azure SQL MI, there is less overlap with SQL Server and greater potential for code or data flow incompatibilities.</p>



<h2 class="wp-block-heading">10 Common Incompatibilities</h2>



<p>There are several very helpful tools (see the &#8220;Resources and tools&#8221; section below) that can help you identify data flow issues prior to migration. As you go through your analysis, keep in mind that Microsoft has established workarounds for a good number of these incompatibilities, so their presence in your code does not necessarily mean they are a barrier to migration.</p>



<p>For a high-level overview, here are some of the most common sticking points we see for migrating SQL code. The differences between SQL MI and SQL DB are included where applicable, as well as some potential workarounds.</p>



<h3 class="wp-block-heading" id="h-1-uses-linked-servers">1. Uses linked servers</h3>



<p>Linked servers can be used in <a href="https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/transact-sql-tsql-differences-sql-server?view=azuresql#linked-servers">SQL MI</a> to access SQL Server and Azure SQL Databases without distributed transactions. SQL DB requires the use of <a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/elastic-query-horizontal-partitioning?view=azuresql">elastic queries</a> instead.</p>



<h3 class="wp-block-heading" id="h-2-performs-cross-database-queries-or-transactions">2. Performs cross-database queries or transactions</h3>



<p>These are supported with SQL MI, but not with SQL DB. In SQL DB, cross-database queries may be able to be converted to <a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/elastic-query-horizontal-partitioning?view=azuresql">elastic queries</a>.</p>



<h3 class="wp-block-heading" id="h-3-uses-database-mail">3. Uses Database Mail</h3>



<p>This is available for SQL MI but not SQL DB. There are <a href="https://www.mssqltips.com/sqlservertip/7049/send-emails-azure-sql-database-azure-logic-apps/">workarounds</a> available for sending email in the Azure platform, but they will require some re-engineering.</p>



<h3 class="wp-block-heading" id="h-4-uses-system-tables-views-functions-or-stored-procedures">4. Uses system tables, views, functions, or stored procedures</h3>



<p>Some system objects are available in both SQL MI and SQL DB but not all. Consult Microsoft&#8217;s <a href="https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/transact-sql-tsql-differences-sql-server?view=azuresql">documentation</a> for a full comparison of what is available.</p>



<p>One important note is that the amount of space available to <strong>tempdb </strong>is provisioned in both SQL MI and SQL DB based on the number of cores available and the service tier licensed. Consult the documentation of each for details.</p>



<h3 class="wp-block-heading" id="h-5-accesses-windows-command-line-or-file-system">5. Accesses Windows command line or file system</h3>



<p>Neither SQL MI nor SQL DB supports direct access to the file system or the Windows command line. </p>



<p>One workaround is to migrate files to <a href="https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction">Azure Blob Storage</a> or <a href="https://learn.microsoft.com/en-us/azure/storage/files/storage-files-introduction">Azure Files</a>. For SQL MI, with the appropriate security and firewall configurations, it is also possible to <a href="https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/point-to-site-p2s-configure?view=azuresql">establish connectivity</a> between your Managed Instance&#8217;s VNet and the location of an on-premises file share.</p>



<p>SQL MI also supports SSISDB configuration and the <a href="https://learn.microsoft.com/en-us/azure/data-factory/how-to-invoke-ssis-package-managed-instance-agent">Integration Services Catalog</a>, allowing SSIS packages to be used for file manipulation. Azure Data Factory can also be leveraged to load and transform files for both SQL MI and SQL DB. An <a href="https://learn.microsoft.com/en-us/azure/data-factory/create-azure-ssis-integration-runtime">Azure-SSIS Integration Runtime (IR)</a> can be installed and configured, and SSIS packages can be run directly from <a href="https://www.mssqltips.com/sqlservertip/6025/using-files-stored-in-azure-file-services-with-integration-services-part-1/">Azure Data Factory</a>.</p>



<h3 class="wp-block-heading" id="h-6-uses-change-data-capture-cdc">6. Uses change data capture (CDC)</h3>



<p>Change data capture is supported for SQL MI. It is also supported for <a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/change-data-capture-overview?view=azuresql">SQL DB</a>, but only in the S3 service tier and above.</p>



<h3 class="wp-block-heading" id="h-7-uses-bulk-insert-or-openrowset">7. Uses BULK INSERT or OPENROWSET</h3>



<p><a href="https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/transact-sql-tsql-differences-sql-server?view=azuresql#bulk-insert--openrowset">BULK INSERT and OPENROWSET</a> are only supported from a supported Azure file source (e.g.: Azure Blob Storage or Azure Files).</p>



<h3 class="wp-block-heading" id="h-8-uses-net-framework-common-language-runtime-clr">8. Uses .NET Framework: common language runtime (CLR)</h3>



<p>CLR support is not available for SQL DB, but it is available in SQL MI with some <a href="https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/transact-sql-tsql-differences-sql-server?view=azuresql#clr">important differences</a>.</p>



<h3 class="wp-block-heading" id="h-9-sql-server-agent">9. SQL Server Agent</h3>



<p>SQL Server Agent is not available in SQL DB, and <a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/elastic-jobs-overview?view=azuresql">elastic jobs</a> should be used instead. In SQL MI, SQL Server Agent is supported with <a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/elastic-jobs-overview?view=azuresql">important differences</a>.</p>



<h3 class="wp-block-heading" id="h-10-uses-semantic-search">10. Uses semantic search</h3>



<p>Full-text semantic search is not available in either SQL MI or SQL DB.</p>



<h2 class="wp-block-heading" id="h-other-important-things-to-remember-when-migrating-to-a-paas-environment">Other important things to remember when migrating to a PaaS environment</h2>



<ul class="wp-block-list">
<li><strong>High availability</strong>: Since high availability is included in the PaaS offerings, SQL Server functionality and syntax connected with Always On Availability Groups is not supported.</li>



<li><strong>Maintenance</strong>: Updates, patches, backups, and restores are likewise managed automatically in the PaaS offerings. Therefore, associated T-SQL syntax will not work in SQL DB and will be different for SQL MI.</li>



<li><strong>Credential management</strong>: Windows authentication is not supported in SQL DB, and is replaced by <a href="https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/winauth-azuread-overview?view=azuresql">Windows Authentication for Microsoft Entra</a> in SQL MI.</li>



<li><strong>Collation</strong>: Catalog collation is set when an instance (SQL MI) or a database (SQL DB) is created, and it cannot be changed afterwards.</li>
</ul>



<h2 class="wp-block-heading" id="h-resources-and-tools">Resources and tools</h2>



<p>I hope this provided you with a jump-start for thinking about whether your SQL Server code is Azure-ready.</p>



<p>Here are a few more resources and tools that can help you take the next steps toward a full compatibility analysis:</p>



<ul class="wp-block-list">
<li><a href="https://learn.microsoft.com/en-us/sql/dma/dma-overview?view=sql-server-ver16">Data Migration Assistant</a> – Microsoft’s robust tool for enabling database compatibility assessments, recommendations, and migration assistance.</li>



<li><a href="https://learn.microsoft.com/en-us/azure/migrate/migrate-services-overview">Azure Migrate</a> – this service can be used as a start-to-finish hub for planning and facilitating a cloud migration.</li>



<li><em><a href="https://www.amazon.com/Pro-Database-Migration-Azure-Modernization/dp/1484282299">Pro Database Migration to Azure</a> </em>– An excellent and comprehensive book covering the best practices for successful on-premises migrations to the Azure cloud platform.</li>
</ul>



<h2 class="wp-block-heading" id="h-want-to-learn-more">Want to learn more?</h2>



<p>Want to learn more about how The SERO Group helps organizations prepare for a SQL Server cloud migration? <a href="https://theserogroup.com/contact-us/">Schedule a call</a> and let&#8217;s talk.</p>
<p>The post <a href="https://theserogroup.com/azure/azure-sql-migration-code/">Is your SQL Server Code Ready for Azure?</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6078</post-id>	</item>
		<item>
		<title>Azure Arc-Enabled SQL Server: Centralized Management for Hybrid Environments</title>
		<link>https://theserogroup.com/azure/azure-arc-enabled-sql-server-centralized-management-for-hybrid-environments/</link>
		
		<dc:creator><![CDATA[Luke Campbell]]></dc:creator>
		<pubDate>Wed, 22 May 2024 12:00:00 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[Microsoft Azure]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Assessment]]></category>
		<category><![CDATA[SQL Security]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=5937</guid>

					<description><![CDATA[<p>Azure Arc-enabled SQL Server is worth considering for organizations looking to unify their database management and capitalize on cloud-native features while still keeping their data on-premises.&#160; Azure Arc is a set of technologies from Microsoft that extends Azure management and services to any infrastructure, including other clouds, on-premises, and edge. This enables you to manage&#8230; <br /> <a class="read-more" href="https://theserogroup.com/azure/azure-arc-enabled-sql-server-centralized-management-for-hybrid-environments/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/azure/azure-arc-enabled-sql-server-centralized-management-for-hybrid-environments/">Azure Arc-Enabled SQL Server: Centralized Management for Hybrid Environments</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Azure Arc-enabled SQL Server is worth considering for organizations looking to unify their database management and capitalize on cloud-native features while still keeping their data on-premises.&nbsp;</p>



<p>Azure Arc is a set of technologies from Microsoft that extends Azure management and services to any infrastructure, including other clouds, on-premises, and edge. This enables you to manage all your SQL Server instances across environments from a single, unified interface.</p>



<h2 class="wp-block-heading" id="h-why-use-azure-arc-enabled-sql-server">Why use Azure Arc-enabled SQL Server?</h2>



<p>Organizations operating in hybrid environments often face challenges in maintaining consistency across their SQL Server instances. This is especially acute with complex compliance requirements and security policies. Azure Arc addresses these issues by: </p>



<ul class="wp-block-list">
<li><strong>Streamlining operations: </strong>Having a unified platform for managing all SQL Servers simplifies the DBA&#8217;s tasks.</li>



<li><strong>Enhancing security: </strong>Leveraging Azure&#8217;s robust security framework helps protect data across all environments.</li>



<li><strong>Improving compliance: </strong>Automated compliance tools reduce the risk of violations.</li>
</ul>



<p>Let&#8217;s take a look at a few key features.</p>



<h2 class="wp-block-heading" id="h-key-features-of-azure-arc-enabled-sql-server">Key features of Azure Arc-enabled SQL Server</h2>



<ul class="wp-block-list">
<li><strong>Unified Management:</strong> Azure Arc provides a centralized portal for managing all your SQL Server instances. Whether your databases are on-premises, in the cloud, or at the edge, you can see them from the Azure Portal.&nbsp;</li>



<li><strong>Automated Updates:</strong> One challenge with managing SQL Servers across different locations is ensuring they are all updated and patched consistently. Azure Arc can automate this process, ensuring instances are always up to date with the latest security patches and performance improvements. </li>



<li><strong>Advanced Security: </strong>You can apply Azure&#8217;s security management and threat protection capabilities to your SQL Server instances, no matter where they reside. This includes advanced threat detection using <a href="https://learn.microsoft.com/en-us/azure/defender-for-cloud/defender-for-sql-usage">Microsoft Defender</a>, vulnerability assessments, certificate rotation, and access controls.</li>



<li><strong>Compliance and Governance: </strong>Azure Policy can be applied to SQL Servers managed through Azure Arc, helping ensure compliance with external regulations and internal policies through automated checks.</li>



<li><strong>Business Continuity: </strong>Azure Arc enables you to configure automated backups to local storage, perform point-in-time restores, view Always On failover cluster instances, and view Always On availability groups.</li>



<li><strong>Migration Readiness: </strong>The Azure SQL readiness assessment evaluates the readiness of SQL Server migrations to Azure SQL (Azure SQL Managed Instance, SQL Server on Azure VM, Azure SQL Database).</li>



<li><strong>SQL Server Assessment: </strong>The best practices assessment provides a method to evaluate the configuration of SQL Server. Once enabled, an assessment scans the SQL Server instance and databases to provide recommendations.</li>
</ul>



<h2 class="wp-block-heading" id="h-how-it-works">How it works</h2>



<p>Setting up Azure Arc for SQL Server involves installing the Azure Connected Machine Agent on your physical or virtual server first. This agent communicates with Azure and brings the SQL Server under Azure management. From here, you can perform operations like monitoring, setting up alerts, implementing backup solutions, and more from within the Azure Portal.&nbsp;</p>



<h2 class="wp-block-heading" id="h-in-conclusion">In conclusion</h2>



<p>Azure Arc-enabled SQL Server simplifies management, enhances security, and ensures compliance across all your SQL Server instances, regardless of their location.  By extending Azure&#8217;s management capabilities to your on-premises and multi-cloud environments, Azure Arc helps you harness the power of the cloud wherever your servers may be.  </p>



<p><strong>Additional Resources:</strong></p>



<ul class="wp-block-list">
<li><a href="https://learn.microsoft.com/en-us/azure/governance/policy/samples/built-in-policies">Azure Policy</a></li>



<li><a href="https://learn.microsoft.com/en-us/sql/sql-server/azure-arc/?view=sql-server-ver16">SQL Server enabled by Azure Arc</a></li>



<li><a href="https://learn.microsoft.com/en-us/azure/azure-arc/servers/prerequisites">Azure Connected Machine Agent Prerequisites</a></li>



<li><a href="https://www.youtube.com/watch?v=qobdHy2N0Zc&amp;t=48s">YouTube &#8211; Azure Arc-enabled SQL Server Experience</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>Are you interested in simplifying the management of your SQL Servers? Schedule a <a href="https://theserogroup.com/#contact">no-obligation call with us</a> to learn more!</p>
<p>The post <a href="https://theserogroup.com/azure/azure-arc-enabled-sql-server-centralized-management-for-hybrid-environments/">Azure Arc-Enabled SQL Server: Centralized Management for Hybrid Environments</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5937</post-id>	</item>
		<item>
		<title>Analyzing Disk Latency in Azure Virtual Machines &#8211; Part 2</title>
		<link>https://theserogroup.com/azure/analyzing-disk-latency-in-azure-virtual-machines-part-2/</link>
					<comments>https://theserogroup.com/azure/analyzing-disk-latency-in-azure-virtual-machines-part-2/#comments</comments>
		
		<dc:creator><![CDATA[Luke Campbell]]></dc:creator>
		<pubDate>Wed, 14 Feb 2024 13:00:00 +0000</pubDate>
				<category><![CDATA[Azure]]></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[Serogroup]]></category>
		<category><![CDATA[Shared Disks]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Assessment]]></category>
		<category><![CDATA[SQL Events]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Consultant]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<category><![CDATA[SQL Training]]></category>
		<category><![CDATA[TempDB]]></category>
		<category><![CDATA[The Sero Group]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=5701</guid>

					<description><![CDATA[<p>&#8220;I thought the cloud was supposed to be fast. Why are things moving like a sloth?&#8221; Have you heard someone complain about the speed of an application after moving it to the Microsoft Azure? Azure is a good environment, but things are not always fast in the cloud. To illustrate, in this post, we&#8217;ll review&#8230; <br /> <a class="read-more" href="https://theserogroup.com/azure/analyzing-disk-latency-in-azure-virtual-machines-part-2/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/azure/analyzing-disk-latency-in-azure-virtual-machines-part-2/">Analyzing Disk Latency in Azure Virtual Machines &#8211; Part 2</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>&#8220;I thought the cloud was supposed to be fast. Why are things moving like a sloth?&#8221; Have you heard someone complain about the speed of an application after moving it to the Microsoft Azure? Azure is a good environment, but things are not always fast in the cloud. To illustrate, in this post, we&#8217;ll review an Azure VM experiencing high disk latency and determine if the bottleneck is due to the VM size or the disk size. This is part 2 of <a href="https://theserogroup.com/azure/analyzing-disk-latency-in-azure-virtual-machines-part-1/">Analyzing Disk Latency in Azure Virtual Machines</a>. </p>



<p>The specs for the VM we&#8217;re using are:</p>



<ul class="wp-block-list">
<li>Standard B4ms (4 vcpus, 16 GiB memory) &#8211; Supports up to <strong>2880 IOPs</strong> or <strong>35 MBps.</strong></li>



<li>Target disk &#8211; Standard SSD E10 &#8211; <strong>500 IOPs</strong> or <strong>60 MBps</strong>.  This drive is capable of bursting to <strong>600</strong> <strong>IOPs</strong> or <strong>150</strong> <strong>MBps</strong>.</li>
</ul>



<p>We&#8217;ll use Microsoft&#8217;s <a href="https://learn.microsoft.com/en-us/azure-stack/hci/manage/diskspd-overview">diskspd</a> utility to generate the load using the 8kb block size.</p>



<h2 class="wp-block-heading" id="h-azure-vm-metrics-reviewing-disk-related-counters">Azure VM Metrics &#8211; Reviewing disk-related counters</h2>



<p>Using Azure VM Metrics, you can review numerous counters related to the VM and create alerts based on a set threshold.  We&#8217;re focused on the following counters within the Virtual Machine Host namespace.  Three separate charts are used.  FYI, filters can be added if you&#8217;re only interested in a specific disk.  Identify the disk LUN and then add the LUN filter to the chart.  </p>



<h3 class="wp-block-heading" id="h-disk-throughput-sec-write-and-read">Disk Throughput / Sec &#8211; Write and Read</h3>



<ul class="wp-block-list">
<li>Data Disk Write Bytes/sec</li>



<li>Data Disk Read Bytes/sec</li>
</ul>



<h3 class="wp-block-heading" id="h-disk-operations-sec-iops-write-and-read">Disk Operations / Sec (IOPs) &#8211; Write and Read</h3>



<ul class="wp-block-list">
<li>Data Disk Write Operations/sec</li>



<li>Data Disk Read Operations/sec</li>
</ul>



<h3 class="wp-block-heading" id="h-disk-latency">Disk Latency </h3>



<ul class="wp-block-list">
<li>Data Disk Latency (Preview)</li>
</ul>



<p>The screenshot below shows each one of the counters.  The time range has been set to the last 30 minutes, which refreshes every 5 minutes.</p>



<figure class="wp-block-image size-large"><a href="https://theserogroup.com/wp-content/uploads/2024/02/image-4.png"><img fetchpriority="high" decoding="async" width="1024" height="507" src="https://theserogroup.com/wp-content/uploads/2024/02/image-4-1024x507.png" alt="" class="wp-image-5731" srcset="https://theserogroup.com/wp-content/uploads/2024/02/image-4-1024x507.png 1024w, https://theserogroup.com/wp-content/uploads/2024/02/image-4-300x149.png 300w, https://theserogroup.com/wp-content/uploads/2024/02/image-4-768x381.png 768w, https://theserogroup.com/wp-content/uploads/2024/02/image-4-1536x761.png 1536w, https://theserogroup.com/wp-content/uploads/2024/02/image-4-2048x1015.png 2048w, https://theserogroup.com/wp-content/uploads/2024/02/image-4-1920x951.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>In the example above, we&#8217;ve maxed out on read IOPs, leading to severe latency (above 1 second). By maxing out on IOPs, we&#8217;re also limiting in how much data can be read from the disk. At 8kb blocks * 524 IOPs, the disk maxes out at 4.1 MB/s.  It&#8217;s important to note that if your application reads or writes in larger block sizes it is possible to increase throughput at the cost of lowering IOPs.  </p>



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



<p>The example above represents a bottleneck encountered at the disk vs. the VM size.  We&#8217;re nowhere near the VM&#8217;s limit of 2,880 IOPs or 35 MBps.  Azure VM Metrics is a fantastic way to review performance counters directly from within the Azure portal.</p>



<h2 class="wp-block-heading" id="h-for-more-information">For more information</h2>



<p>If you’d like some assistance assessing your SQL Server workload on an Azure Virtual Machine,&nbsp;<a href="https://theserogroup.com/#contact">reach out</a>. We’re happy to help.</p>



<p>In the meantime, here are some other posts you may find interesting.</p>



<ul class="wp-block-list">
<li><a href="https://theserogroup.com/dba/identifying-sql-server-disk-latency/">Identifying SQL Server Disk Latency</a></li>



<li><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></li>



<li><a href="https://theserogroup.com/sql-server/azure-shared-disks-failover-clustered-instances/">Azure shared disks &#8211; Failover Clustered Instances</a></li>



<li><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/why-is-my-sql-server-slow-14-common-reasons/">Why is My SQL Server Slow? 14 Common Reasons</a></li>



<li><a href="https://theserogroup.com/data-strategy/10-data-storage-considerations-for-growing-companies/">10 Data Storage Considerations for Growing Companies</a></li>
</ul>
<p>The post <a href="https://theserogroup.com/azure/analyzing-disk-latency-in-azure-virtual-machines-part-2/">Analyzing Disk Latency in Azure Virtual Machines &#8211; Part 2</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://theserogroup.com/azure/analyzing-disk-latency-in-azure-virtual-machines-part-2/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5701</post-id>	</item>
		<item>
		<title>Analyzing Disk Latency in Azure Virtual Machines &#8211; Part 1</title>
		<link>https://theserogroup.com/azure/analyzing-disk-latency-in-azure-virtual-machines-part-1/</link>
		
		<dc:creator><![CDATA[Luke Campbell]]></dc:creator>
		<pubDate>Wed, 17 Jan 2024 13:00:00 +0000</pubDate>
				<category><![CDATA[Azure]]></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[Serogroup]]></category>
		<category><![CDATA[Shared Disks]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Assessment]]></category>
		<category><![CDATA[SQL Events]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Consultant]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<category><![CDATA[SQL Training]]></category>
		<category><![CDATA[TempDB]]></category>
		<category><![CDATA[The Sero Group]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=5664</guid>

					<description><![CDATA[<p>If you&#8217;ve moved your SQL Server workload to Azure Virtual Machines, you&#8217;ve noticed there&#8217;s no shortage in the number of options available. Virtual machine sizes, disk types, caching vs no caching, support for bursting, etc. When hosting SQL Server on Azure Virtual Machines, choosing the right combination of VM size and disk types is essential&#8230; <br /> <a class="read-more" href="https://theserogroup.com/azure/analyzing-disk-latency-in-azure-virtual-machines-part-1/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/azure/analyzing-disk-latency-in-azure-virtual-machines-part-1/">Analyzing Disk Latency in Azure Virtual Machines &#8211; Part 1</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>If you&#8217;ve moved your SQL Server workload to Azure Virtual Machines, you&#8217;ve noticed there&#8217;s no shortage in the number of options available.  Virtual machine sizes, disk types, caching vs no caching, support for bursting, etc.  </p>



<p>When hosting SQL Server on Azure Virtual Machines, choosing the right combination of VM size and disk types is essential from both a cost and performance perspective.  </p>



<p>However, workloads change over time and may require resizing the Azure VM or disks.  For example, perhaps you deployed a new application that utilizes SQL Server on an Azure Virtual Machine.  At first, usage was low, but now the application has become critical to the organization, and usage has increased significantly.  You&#8217;ve noticed disk-related waits in SQL Server have increased, and you are wondering how to address the latency and end users have started to complain.</p>



<p>Tracking down disk performance issues can be tricky.  There are multiple layers to consider.  Is it the virtual machine or the disk(s) causing the bottleneck?  </p>



<p>In Azure, disks and VMs have a cap on how much throughput and IOPs can be performed.  When looking into disk performance issues, it&#8217;s essential to account for the following at both the VM level and Disk level, as each has different levels of performance:</p>



<ul class="wp-block-list">
<li>VM &#8211; Max cached and temp storage throughput (IOPs/MBps).  Not all VMs support premium storage caching.</li>



<li>VM &#8211; Max uncached disk throughput (IOPs/MBps)</li>



<li>VM &#8211; Max data disks</li>



<li>Disk &#8211; Max disk size</li>



<li>Disk &#8211; Max throughput (MB/s)</li>



<li>Disk &#8211; Max IOPs</li>
</ul>



<p>To understand the VM level caps mentioned above, let&#8217;s review the three paths an IO can take: Cached, Uncached, Local/Temp disk.</p>



<h2 class="wp-block-heading" id="h-azure-virtual-machine-disk-io-paths">Azure Virtual Machine Disk IO Paths</h2>



<h3 class="wp-block-heading" id="h-cached">Cached</h3>



<p><strong>Purpose</strong>: Host caching in Azure is designed to improve performance by storing frequently accessed data closer to the VM.  This caching mechanism enhances read operations and can significantly reduce latency.  </p>



<p><strong>Types of Operations</strong>: It&#8217;s typically used for read-heavy workloads.  You can configure host caching to be read-only or read/write (not recommended for disks hosting transaction log files).  Read-only caching is ideal for workloads that predominantly involve read operations, while read/write caching is suitable for a balance of read and write operations.</p>



<p><strong>Performance</strong>: Cached I/O allows for higher IOPS and throughput as it utilizes the VM&#8217;s cache, which is faster than accessing data directly from the disk.  </p>



<p><strong>Limitations</strong>: The amount of storage available for host caching is limited and specified in the VM&#8217;s documentation.  Also, cached I/O counts towards the VM&#8217;s cached limits.</p>



<p><strong>Data Integrity</strong>: For read/write caching, writes are initially written to the cache and later written to the disk, which can be a concern for workloads requiring immediate persistence on disk.</p>



<h3 class="wp-block-heading" id="h-uncached">Uncached</h3>



<p><strong>Purpose</strong>: Uncached disk I/O involves direct interaction with the disk without the intermediate caching layer.  It is used for less frequently accessed data or when the latest data is required.</p>



<p><strong>Types of Operations</strong>: Suitable for workloads that involve a significant amount of write operations or where data integrity and immediate persistence are crucial.</p>



<p><strong>Performance</strong>: Generally, uncached disk I/O has lower performance compared to cached I/O due to the absence of the caching layer.  The IOPS and throughput are limited by the disk&#8217;s and VM&#8217;s capabilities.</p>



<p><strong>Limitations</strong>: The performance is constrained by the disk type and size and VM size.  For example, a P30 disk can handle up to 5,000 IOPs.</p>



<p><strong>Data Integrity</strong>: Since all operations are directly on the disk, there is immediate persistence of data, which is critical for certain applications and data security protocols.</p>



<h3 class="wp-block-heading" id="h-local-temp-disk">Local/Temp disk</h3>



<p><strong>Purpose</strong>: Temporary disks provide short-term storage for applications and processes running on the VM.  They are primarily used to store data that doesn&#8217;t need to be persistent, such as swap files, system caches, page files, or temporary data files (tempdb for example).</p>



<p><strong>Performance</strong>: Temporary disks are typically faster than standard storage disks because they are located on the same physical machine as the VM.  The performance of the temporary disk is tied to the VM size and offers high I/O throughput and low latency, making them ideal for temporary workloads and caching.</p>



<p><strong>Data Persistence and Reliability</strong>: Data on the temporary disk is volatile.  This means it persists only during the lifetime of the VM instance.  If the VM is stopped or de-allocated (not just restarted), data on the temporary disk is likely to be lost.  During some maintenance events or when the VM is moved to a different host hardware, the data on the temporary disk can also be lost. </p>



<p class="has-vivid-red-color has-text-color has-link-color wp-elements-ac08b9dc6ea8015a12bb3591da2e2cb2"><strong>Therefore, temporary disks should not be used for any data you need to keep.</strong></p>



<p>To learn more on how Azure High-Scale VMs utilize disk caching, see <a href="https://learn.microsoft.com/en-us/azure/virtual-machines/premium-storage-performance#disk-caching" target="_blank" rel="noreferrer noopener">here</a>.</p>



<h2 class="wp-block-heading" id="h-azure-vm-size-limitations">Azure VM Size Limitations</h2>



<p>Each Azure Virtual Machine size has the following properties defined (some VM sizes include additional properties such as burstable credits and cached throughput):</p>



<ul class="wp-block-list">
<li>vCPU &#8211; Number of virtual CPUs</li>



<li>Memory GiB </li>



<li>Temp Storage </li>



<li>Max Data Disks &#8211; Number of data disks that can be attached.</li>



<li>Max Network Bandwidth (Gbps)</li>



<li>Max NICs &#8211; Max number of network interface cards.</li>



<li>Max uncached disk throughput IOPS/MBps &#8211; Combined total of all disks.  For example, the remaining disks will encounter latency if one disk uses all available IOPs.</li>
</ul>



<p>We&#8217;ll focus on the disk-related properties throughout this series.</p>



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



<p>In part 2, we&#8217;ll review an Azure VM experiencing high disk latency.  We&#8217;ll use Azure VM Metrics to help identify where the bottleneck may be and how to alleviate the issue.</p>



<p>In the meantime, here are a few other articles that may be helpful.</p>



<ul class="wp-block-list">
<li><a href="https://theserogroup.com/azure/azure-shared-disks-failover-clustered-instance-sql-server-2016/">Azure shared disks &#8211; Failover Clustered Instance &#8211; SQL Server 2016</a></li>



<li><a href="https://theserogroup.com/sql-server/azure-shared-disks-failover-clustered-instances/">Azure shared disks &#8211; Failover Clustered Instances</a></li>



<li><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/dba/identifying-sql-server-disk-latency/">Identifying SQL Server Disk Latency</a></li>



<li><a href="https://theserogroup.com/data-strategy/10-data-storage-considerations-for-growing-companies/">10 Data Storage Considerations for Growing Companies</a></li>
</ul>



<p>If you’d like some assistance assessing your SQL Server workload on an Azure Virtual Machine, <a href="https://theserogroup.com/#contact">reach out</a>. We’re happy to help.</p>
<p>The post <a href="https://theserogroup.com/azure/analyzing-disk-latency-in-azure-virtual-machines-part-1/">Analyzing Disk Latency in Azure Virtual Machines &#8211; Part 1</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5664</post-id>	</item>
		<item>
		<title>How to Test SQL Server Backups Using dbatools</title>
		<link>https://theserogroup.com/azure/how-to-test-sql-server-backups-using-dbatools/</link>
					<comments>https://theserogroup.com/azure/how-to-test-sql-server-backups-using-dbatools/#comments</comments>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Wed, 31 Mar 2021 16:19:32 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[Database Development]]></category>
		<category><![CDATA[IT Manager]]></category>
		<category><![CDATA[Microsoft Azure]]></category>
		<category><![CDATA[Script Library]]></category>
		<category><![CDATA[Sero]]></category>
		<category><![CDATA[Sero Group]]></category>
		<category><![CDATA[Serogroup]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL 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[The Sero Group]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=3617</guid>

					<description><![CDATA[<p>The call comes in. “Something’s happened. We need to restore the production database. Can you do it? And how long will it take?” No DBA wants to receive that call but, frankly, answering those calls and the ensuing questions are part of a DBA’s job. And there’s no better way to know that you can,&#8230; <br /> <a class="read-more" href="https://theserogroup.com/azure/how-to-test-sql-server-backups-using-dbatools/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/azure/how-to-test-sql-server-backups-using-dbatools/">How to Test SQL Server Backups Using dbatools</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>The call comes in. “Something’s happened. We need to restore the production database. Can you do it? And how long will it take?” No DBA wants to receive that call but, frankly, answering those calls and the ensuing questions are part of a DBA’s job. And there’s no better way to know that you can, and how long it will take, than to periodically test your SQL Server backups.</p>



<p>In <a href="https://theserogroup.com/the-sero-group/how-often-should-i-test-my-sql-server-backups/">How Often Should I Test My SQL Server Backups?</a>, I shared a schedule we recommend to our customers for monitoring, verifying, and testing their SQL Server backups. That last part, testing the backups, is important, really important. So, I shared a couple of basic T-SQL scripts for restoring a database to a test location and running DBCC CHECKDB on it. </p>



<p>Fans of PowerShell know that testing SQL backups can also be done using <a rel="noreferrer noopener" href="https://dbatools.io/" target="_blank">dbatools</a>. Let’s have a look. For this exercise, you’ll need PowerShell, of course, along with a recent copy of dbatools. You can <a href="https://dbatools.io/download">download </a><a rel="noreferrer noopener" href="https://dbatools.io/download" target="_blank">dbatools</a> for free. </p>



<h2 class="wp-block-heading" id="h-backing-up-a-sql-server-database-with-dbatools">Backing up a SQL Server database with dbatools</h2>



<p>Let’s start by backing our <a href="https://theserogroup.com/career-development/data-getcha-data-here/">BaseballData database</a> using the dbatools <a rel="noreferrer noopener" href="https://docs.dbatools.io/#Backup-DbaDatabase" target="_blank">Backup-DbaDatabase</a> command. This creates a native SQL Server backup file, the same file that is created with the T-SQL <a rel="noreferrer noopener" href="https://docs.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver15" target="_blank">BACKUP DATABASE</a> command. </p>



<p>In this example, I’m creating a Full back up the BaseballData database that resides on the local default instance of SQL Server. The instance is running in a Linux container, so the -Path parameter is formatted for a Linux file system. </p>



<pre class="wp-block-code"><code>Backup-DbaDatabase -SqlInstance localhost -SqlCredential sa -Database BaseballData -Type Full -Path /var/opt/mssql/backup</code></pre>



<p>The command output shows that a SQL backup file has been created. </p>



<figure class="wp-block-image size-large"><a href="https://theserogroup.com/wp-content/uploads/2021/03/dbatools-backup.png"><img decoding="async" width="1024" height="179" src="https://theserogroup.com/wp-content/uploads/2021/03/dbatools-backup-1024x179.png" alt="SQL Server backup with dbatools" class="wp-image-3620" srcset="https://theserogroup.com/wp-content/uploads/2021/03/dbatools-backup-1024x179.png 1024w, https://theserogroup.com/wp-content/uploads/2021/03/dbatools-backup-300x52.png 300w, https://theserogroup.com/wp-content/uploads/2021/03/dbatools-backup-768x134.png 768w, https://theserogroup.com/wp-content/uploads/2021/03/dbatools-backup-1536x269.png 1536w, https://theserogroup.com/wp-content/uploads/2021/03/dbatools-backup.png 1846w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading" id="h-testing-a-sql-server-backup-using-dbatools">Testing a SQL Server backup using dbatools</h2>



<p>Now that we have a SQL backup file, let’s use the <a rel="noreferrer noopener" href="https://docs.dbatools.io/#Test-DbaLastBackup" target="_blank">Test-DbaLastBackup</a> command to test the backup. This command performs several steps for us, including: </p>



<ol class="wp-block-list">
<li>Restoring the SQL backup file to a destination with a new name. The destination can be the same or a different SQL Server instance. </li>



<li>Changing the database name to prevent confusion. The restored database will be called &#8220;dbatools-testrestore-BaseballData&#8221; by default. I can provide a different name, if I wish.</li>



<li>Changing the SQL database file names to prevent conflicts with original database files.</li>



<li>Checking the newly restored database with DBCC CHECKDB to confirm that it is in good working order.</li>



<li>Dropping the newly restored database as part of the clean up.</li>
</ol>



<p>Notice that I didn&#8217;t specify which SQL backup file to test. The command finds the most recent Full backup to test.</p>



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



<p>The result of theTest-DbaLastBackup command are sent to the output screen by default. Of course, we can also send the results to a file. </p>



<figure class="wp-block-image size-large"><a href="https://theserogroup.com/wp-content/uploads/2021/03/dbatools-testbackup.png"><img decoding="async" width="1024" height="539" src="https://theserogroup.com/wp-content/uploads/2021/03/dbatools-testbackup-1024x539.png" alt="Testing a SQL Server backup file using dbatools" class="wp-image-3622" srcset="https://theserogroup.com/wp-content/uploads/2021/03/dbatools-testbackup-1024x539.png 1024w, https://theserogroup.com/wp-content/uploads/2021/03/dbatools-testbackup-300x158.png 300w, https://theserogroup.com/wp-content/uploads/2021/03/dbatools-testbackup-768x404.png 768w, https://theserogroup.com/wp-content/uploads/2021/03/dbatools-testbackup.png 1364w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>Looking at the output, we can see that the database was successfully restored, and how long it took to restore it. We can also see that DBCC CHECKDB ran and how long it took to complete. We can dive into the results of the integrity check, too. See <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> for more information.</p>



<h2 class="wp-block-heading" id="h-test-your-sql-server-backups-often">Test your SQL Server backups often</h2>



<p>Using PowerShell and the Test-DbaLastBackup command makes testing your SQL backups relatively easy. Yes, you still need the disk space and server resources to do it. But being able to answer that frantic question &#8220;Do we have a good backup?&#8221; makes it definitely worth while. </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.</p>
<p>The post <a href="https://theserogroup.com/azure/how-to-test-sql-server-backups-using-dbatools/">How to Test SQL Server Backups Using dbatools</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://theserogroup.com/azure/how-to-test-sql-server-backups-using-dbatools/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3617</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>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>
	</channel>
</rss>
