<?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>Shared Disks Archives - The SERO Group</title>
	<atom:link href="https://theserogroup.com/tag/shared-disks/feed/" rel="self" type="application/rss+xml" />
	<link>https://theserogroup.com/tag/shared-disks/</link>
	<description>SQL Servers Healthy, Secure, And Reliable</description>
	<lastBuildDate>Wed, 03 Jun 2026 15:37:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://theserogroup.com/wp-content/uploads/2024/07/cropped-Canister-only-1-32x32.png</url>
	<title>Shared Disks Archives - The SERO Group</title>
	<link>https://theserogroup.com/tag/shared-disks/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">121220030</site>	<item>
		<title>An Overview of Accelerated Database Recovery</title>
		<link>https://theserogroup.com/azure/an-overview-of-accelerated-database-recovery/</link>
					<comments>https://theserogroup.com/azure/an-overview-of-accelerated-database-recovery/#respond</comments>
		
		<dc:creator><![CDATA[Lee Markum]]></dc:creator>
		<pubDate>Wed, 17 Jun 2026 12:00:00 +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=7775</guid>

					<description><![CDATA[<p>SQL Server has had a number of really wonderful new features over the last several releases. One of those features is Accelerated Database Recovery. This enhancement has received some coverage in the community and I want to make my own contribution to promoting this feature. What is Accelerated Database Recovery? Accelerated Database Recovery (ADR) came&#8230; <br /> <a class="read-more" href="https://theserogroup.com/azure/an-overview-of-accelerated-database-recovery/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/azure/an-overview-of-accelerated-database-recovery/">An Overview of Accelerated Database Recovery</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">SQL Server has had a number of really wonderful new features over the last several releases. One of those features is Accelerated Database Recovery. This enhancement has received some coverage in the community and I want to make my own contribution to promoting this feature.</p>



<h2 id="h-what-is-accelerated-database-recovery" class="wp-block-heading">What is Accelerated Database Recovery?</h2>



<p class="wp-block-paragraph">Accelerated Database Recovery (ADR) came out in SQL Server 2019 and is an enhanced way for SQL Server to do database crash recovery. It uses a new Streaming Log (SLOG) feature that allows much faster redo and undo phases of the process by tracking any non-versioned actions.</p>



<p class="wp-block-paragraph">The Persistent Version Store is another new component to the process. It holds row versions in the database itself, either on the data pages being modified or in a separate system table. This persisted version store is very similar to how read committed snapshot isolation uses row-versions to allow for read and write queries to operate without blocking each other. This holding mechanism for row versions is cleaned up periodically by a background process that removes unneeded row versions. This persisted version store, in combination with the SLOG, allows a couple of things.</p>



<p class="wp-block-paragraph">First, in the redo phase there is no longer the need to read the transaction log serially from the oldest uncommitted transaction forward to the time of the crash to replay and redo records for creating a consistent state in the database. Instead, SQL Server uses the SLOG to recover any non-versioned actions from the oldest uncommitted transaction forward up to the point of the last checkpoint. This is much faster. Once the last checkpoint is reached, only then will SQL Server start reading the transaction log for any redo work.</p>



<p class="wp-block-paragraph">Second, in the Undo phase, the SLOG is used again to undo any non-versioned operations, and the persistent version store is used to simply switch the database rows back to whatever the proper current row was at the time of the crash.</p>



<p class="wp-block-paragraph">Traditional Recovery: Picture from <a href="https://learn.microsoft.com/en-us/sql/relational-databases/accelerated-database-recovery-concepts?view=sql-server-ver17">https://learn.microsoft.com/en-us/sql/relational-databases/accelerated-database-recovery-concepts?view=sql-server-ver17</a></p>



<figure class="wp-block-image size-large"><a href="https://theserogroup.com/wp-content/uploads/2026/06/TraditionalSQLServerRecovery_2026-06-01-141057.png"><img fetchpriority="high" decoding="async" width="1024" height="528" src="https://theserogroup.com/wp-content/uploads/2026/06/TraditionalSQLServerRecovery_2026-06-01-141057-1024x528.png" alt="" class="wp-image-7776" srcset="https://theserogroup.com/wp-content/uploads/2026/06/TraditionalSQLServerRecovery_2026-06-01-141057-1024x528.png 1024w, https://theserogroup.com/wp-content/uploads/2026/06/TraditionalSQLServerRecovery_2026-06-01-141057-300x155.png 300w, https://theserogroup.com/wp-content/uploads/2026/06/TraditionalSQLServerRecovery_2026-06-01-141057-768x396.png 768w, https://theserogroup.com/wp-content/uploads/2026/06/TraditionalSQLServerRecovery_2026-06-01-141057.png 1376w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">Recovery using Accelerated Database Recovery: Picture from <a href="https://learn.microsoft.com/en-us/sql/relational-databases/accelerated-database-recovery-concepts?view=sql-server-ver17">https://learn.microsoft.com/en-us/sql/relational-databases/accelerated-database-recovery-concepts?view=sql-server-ver17</a></p>



<figure class="wp-block-image size-large"><a href="https://theserogroup.com/wp-content/uploads/2026/06/SQLServerRecoveryWithADR_2026-06-01-141057.png"><img decoding="async" width="1024" height="573" src="https://theserogroup.com/wp-content/uploads/2026/06/SQLServerRecoveryWithADR_2026-06-01-141057-1024x573.png" alt="" class="wp-image-7777" srcset="https://theserogroup.com/wp-content/uploads/2026/06/SQLServerRecoveryWithADR_2026-06-01-141057-1024x573.png 1024w, https://theserogroup.com/wp-content/uploads/2026/06/SQLServerRecoveryWithADR_2026-06-01-141057-300x168.png 300w, https://theserogroup.com/wp-content/uploads/2026/06/SQLServerRecoveryWithADR_2026-06-01-141057-768x430.png 768w, https://theserogroup.com/wp-content/uploads/2026/06/SQLServerRecoveryWithADR_2026-06-01-141057.png 1271w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 id="h-why-would-you-want-to-enable-accelerated-database-recovery" class="wp-block-heading">Why would you want to enable Accelerated Database Recovery?</h2>



<p class="wp-block-paragraph">Accelerated database recovery can save you and your clients from extended outages due to long rollback times under heavy load. I’ve seen rollback times of 45-60 minutes be reduced to seconds with this feature enabled. The use-case I had was during SQL Server patching clients weren’t always out of the system as requested. In some cases, the client activity had a lot of changes in-flight when patching was applied and the traditional recovery method took a very long time after the server rebooted.</p>



<p class="wp-block-paragraph">I enabled ADR and never had that problem again. This feature can also save you from pain you inflict on yourself. If you’re running a query to make a lot of changes and it is decided to kill the query, causing rollback, then the ADR feature can execute rollback almost instantaneously. This is much better than waiting a long time for single threaded rollback of a query that has been running a long time.</p>



<h2 class="wp-block-heading">How to determine if Accelerated Database Recovery is enabled?</h2>



<p class="wp-block-paragraph">The system table sys.databases can be queried to show whether this feature is enabled or not.</p>



<pre class="wp-block-code"><code>SELECT name
FROM sys.databases 
WHERE is_accelerated_database_recovery_on = 1;
</code></pre>



<h2 class="wp-block-heading">How to enable Accelerated Database Recovery?</h2>



<p class="wp-block-paragraph">An exclusive database lock is required to enable Accelerated Database Recovery. This means the change should be done in a maintenance window where no activity is expected. The feature can be enabled in the presence of other activity using the termination clause WITH ROLLBACK [IMMMEDIATE | AFTER {Number} SECONDS | NO_WAIT] . Using the &nbsp;IMMEDIATE option will immediately rollback other transactions so that the ALTER statement will complete. The NO_WAIT option will terminate the ALTER statement if it can’t be executed immediately. Choose one of the three options.</p>



<pre class="wp-block-code"><code>ALTER DATABASE &#91;&lt;db_name&gt;] SET ACCELERATED_DATABASE_RECOVERY = ON WITH ROLLBACK &#91;IMMMEDIATE | AFTER {Number} SECONDS | NO_WAIT;</code></pre>



<h2 class="wp-block-heading">What sp_configure settings should be adjusted for Accelerated Database Recovery?</h2>



<p class="wp-block-paragraph">First, the ADR Cleaner Thread Count option in sp_configure controls the number of cpu threads to use for the background cleaner process that removes old row versions from the Persisted Version Store. This option was introduced in SQL Server 2022. It is advisable not to set this to a large number. You can increase it from the default of 1 to 2 or perhaps 4 to ensure that Persisted Version Store cleanup is happening quickly enough across a large number of databases.</p>



<pre class="wp-block-code"><code>-- Configure ADR cleaner to use 4 threads
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

EXEC sp_configure 'ADR Cleaner Thread Count', 4;
RECONFIGURE WITH OVERRIDE;
</code></pre>



<p class="wp-block-paragraph">Second, the ADR Pre-allocation Factor setting can also be adjusted. If the “just in time” mechanism to allocate pages to store rows in the persisted version store is above zero by a significant amount, then this sp_configure option can be set to allocate pages ahead of time for the version store. There is an extended event called tx_version_optimized_insert_stats that can be reviewed to see what the “just in time” value is. The value to check is labeled “foreground_allocation_percent.”</p>



<p class="wp-block-paragraph">The default value for the ADR pre-allocation factor is 4. The number of pages allocated at any one time is 512 X the ADR Pre-allocation Factor. It isn’t recommended to set this fact too high because pre-allocating too many pages can cause contention.</p>



<pre class="wp-block-code"><code>-- Configure ADR Preallocation Factor
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

EXEC sp_configure 'ADR Preallocation Factor', 6; -- Defaults vary based on workload
RECONFIGURE WITH OVERRIDE;
</code></pre>



<p class="wp-block-paragraph"></p>



<h2 id="h-is-a-long-rollback-costing-you-downtime" class="wp-block-heading"><strong>Is a Long Rollback Costing You Downtime?</strong></h2>



<p class="wp-block-paragraph">SQL Server recovery issues can turn a routine maintenance window into a multi-hour outage. The SERO Group specializes in exactly this kind of proactive SQL Server management. <a href="https://theserogroup.com/contact-us/" target="_blank" rel="noreferrer noopener">Schedule a free discovery call</a> and let&#8217;s talk about your environment.</p>
<p>The post <a href="https://theserogroup.com/azure/an-overview-of-accelerated-database-recovery/">An Overview of Accelerated Database Recovery</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://theserogroup.com/azure/an-overview-of-accelerated-database-recovery/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7775</post-id>	</item>
		<item>
		<title>How to Use VSSADMIN Commands To Manage Low Disk Space</title>
		<link>https://theserogroup.com/azure/how-to-use-vssadmin-commands-to-manage-low-disk-space/</link>
					<comments>https://theserogroup.com/azure/how-to-use-vssadmin-commands-to-manage-low-disk-space/#respond</comments>
		
		<dc:creator><![CDATA[Lee Markum]]></dc:creator>
		<pubDate>Wed, 03 Jun 2026 15:14:07 +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=7767</guid>

					<description><![CDATA[<p>Low disk space alerts are a common occurrence in I.T. For SQL Server consultants, there could be a few causes: This last scenario related to volume shadow service is what I want to talk about today. This one can be a little confusing at first because your organization may get a low disk space alert&#8230; <br /> <a class="read-more" href="https://theserogroup.com/azure/how-to-use-vssadmin-commands-to-manage-low-disk-space/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/azure/how-to-use-vssadmin-commands-to-manage-low-disk-space/">How to Use VSSADMIN Commands To Manage Low Disk Space</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Low disk space alerts are a common occurrence in I.T. For SQL Server consultants, there could be a few causes:</p>



<ul class="wp-block-list">
<li>A runaway transaction filling up a log file or even an mdf file in a user database or tempdb.</li>



<li>Someone or some process took an extra backup that wasn&#8217;t planned for.</li>



<li>A new database was created with larger than expected files sizes.</li>



<li>An application is using the Volume Shadow Service to make backups of databases to a local volume.</li>
</ul>



<p class="wp-block-paragraph">This last scenario related to volume shadow service is what I want to talk about today. This one can be a little confusing at first because your organization may get a low disk space alert that doesn&#8217;t seem to make sense. The alert may indicate that there is less than 10% free space, but looking at the volume in Windows Explorer doesn&#8217;t show that at all. It turns out that VSS files aren&#8217;t visible to Windows explorer. You might come across this when investigating the following error, &#8220;Volsnap &#8211; 36 &#8211; The shadow copies of volume E: were aborted because the shadow copy storage could not grow due to a user imposed limit.&#8221;</p>



<p class="wp-block-paragraph">To investigate what is happening, try some of the <a href="https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc754968(v=ws.11)">VSSAdmin</a> commands, like this:</p>



<pre class="wp-block-code"><code>vssadmin list shadowstorage</code></pre>



<p class="wp-block-paragraph">The output pf this PowerShell command will show what volumes are being backed up by VSS, and what the target volume is for those VSS files. If the volumes are already low on space, deleting some of the shadow copies may be the first thing needed. This can be done with the following command:</p>



<pre class="wp-block-code"><code>vssadmin delete shadows /for=&lt;ForVolumeSpec&gt; &#91;/oldest | /all | /shadow=&lt;ShadowID&gt;] &#91;/quiet]</code></pre>



<p class="wp-block-paragraph">Then a limit can be placed on the amount of storage allocated to VSS files using this command:</p>



<pre class="wp-block-code"><code>vssadmin resize shadowstorage /for=&lt;ForVolumeSpec&gt; /on=&lt;OnVolumeSpec&gt; &#91;/maxsize=&lt;MaxSizeSpec&gt;]</code></pre>



<p class="wp-block-paragraph">Keep in mind that someone will need to determine first if the older VSS files are needed prior to executing the delete and resize commands. </p>



<h2 id="h-tired-of-chasing-sql-server-alerts" class="wp-block-heading">Tired of Chasing SQL Server Alerts?</h2>



<p class="wp-block-paragraph">Dealing with disk space issues on your SQL Servers? That&#8217;s exactly the kind of problem The SERO Group solves every day. <a href="https://theserogroup.com/contact-us/">Schedule a free discovery call</a> and let&#8217;s take a look.</p>
<p>The post <a href="https://theserogroup.com/azure/how-to-use-vssadmin-commands-to-manage-low-disk-space/">How to Use VSSADMIN Commands To Manage Low Disk Space</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://theserogroup.com/azure/how-to-use-vssadmin-commands-to-manage-low-disk-space/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7767</post-id>	</item>
		<item>
		<title>Why Quiet Reflection Leads to Better IT Strategy Decisions</title>
		<link>https://theserogroup.com/azure/why-quiet-reflection-leads-to-better-it-strategy-decisions/</link>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Wed, 17 Dec 2025 13:00:04 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Data Security]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Professional Development]]></category>
		<category><![CDATA[SQL Community]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Consulting]]></category>
		<category><![CDATA[The Sero Group]]></category>
		<category><![CDATA[Clustering]]></category>
		<category><![CDATA[Clusters]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[Database Development]]></category>
		<category><![CDATA[IT Manager]]></category>
		<category><![CDATA[Microsoft Azure]]></category>
		<category><![CDATA[Public Speaking]]></category>
		<category><![CDATA[Script Library]]></category>
		<category><![CDATA[Sero]]></category>
		<category><![CDATA[Sero Group]]></category>
		<category><![CDATA[Serogroup]]></category>
		<category><![CDATA[Shared Disks]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Assessment]]></category>
		<category><![CDATA[SQL Audit]]></category>
		<category><![CDATA[SQL Conference]]></category>
		<category><![CDATA[SQL Consultant]]></category>
		<category><![CDATA[SQL Events]]></category>
		<category><![CDATA[SQL Security]]></category>
		<category><![CDATA[SQL Server Consultant]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<category><![CDATA[SQL Training]]></category>
		<category><![CDATA[TempDB]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=7691</guid>

					<description><![CDATA[<p>Last Saturday, I woke up before dawn to a quiet house. My family was still asleep, as I’m the only morning person in our household. The Christmas tree lights cast a warm glow across the room, and I was alone with my thoughts and a hot cup of coffee. No urgent emails, no fire drills,&#8230; <br /> <a class="read-more" href="https://theserogroup.com/azure/why-quiet-reflection-leads-to-better-it-strategy-decisions/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/azure/why-quiet-reflection-leads-to-better-it-strategy-decisions/">Why Quiet Reflection Leads to Better IT Strategy Decisions</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">Instead, I thought about the relationships we strengthened. The trust we built with clients. The problems we solved before they became crises.</p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">This year reminded me of something Eisenhower once said: <strong>&#8220;Plans are worthless, but planning is everything.&#8221;</strong></p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph"><strong>The plan itself wasn&#8217;t the point. The thinking I did while creating the plan was the point.</strong></p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">There&#8217;s a third option: fractional DBA services that give you expert oversight without the full-time price tag. </p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">Here&#8217;s the thing about those early Saturday morning moments: they&#8217;re rare. And precious. </p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">Strategic work requires space. It requires stepping back from the urgent to focus on the important.</p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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>SQL Server Disaster Recovery: Four Essential Security Measures</title>
		<link>https://theserogroup.com/sql-server/sql-server-disaster-recovery-four-essential-security-measures/</link>
		
		<dc:creator><![CDATA[Joe Webb]]></dc:creator>
		<pubDate>Wed, 06 Nov 2024 13:00:00 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[IT Manager]]></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 Security]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=6837</guid>

					<description><![CDATA[<p>Since Microsoft SQL Server databases are critical for many organizations, protecting SQL Server from disasters such as security breaches and data loss isn&#8217;t optional—it&#8217;s essential. This is especially true for sectors like healthcare, banking, and FinTech. I&#8217;ve suffered a great many catastrophes in my life. Most of them never happened. -Mark Twain Mark Twain&#8217;s quip&#8230; <br /> <a class="read-more" href="https://theserogroup.com/sql-server/sql-server-disaster-recovery-four-essential-security-measures/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/sql-server/sql-server-disaster-recovery-four-essential-security-measures/">SQL Server Disaster Recovery: Four Essential Security Measures</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Since Microsoft SQL Server databases are critical for many organizations, protecting SQL Server from disasters such as security breaches and data loss isn&#8217;t optional—it&#8217;s essential. This is especially true for sectors like healthcare, banking, and FinTech.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I&#8217;ve suffered a great many catastrophes in my life. Most of them never happened. -Mark Twain</p>
</blockquote>



<p class="wp-block-paragraph">Mark Twain&#8217;s quip may have been an admonition against excessive worrying, but it also speaks to the benefits of preparedness. When you&#8217;re prepared, you&#8217;re in the best possible position if catastrophe does strike. You&#8217;ll also lower your stress levels on all of those days when there isn&#8217;t a disaster—a win-win situation.</p>



<p class="wp-block-paragraph">So, what do we need to do to prepare and protect our SQL Server from disaster?  </p>



<h2 class="wp-block-heading" id="h-what-are-disaster-recovery-and-security-maintenance">What are disaster recovery and security maintenance?</h2>



<p class="wp-block-paragraph">Disaster recovery and security maintenance include regular tasks that help to protect your SQL Server from data loss and unauthorized access. These activities can and should include backing up your databases, testing your backups, monitoring for anomalies, and conducting regular security audits.</p>



<h4 class="wp-block-heading" id="h-1-regular-backups-and-recovery-testing">1. Regular backups and recovery testing</h4>



<p class="wp-block-paragraph">Backups are table stakes disaster recovery. They ensure your organization can recover data in the event of a disaster. Maybe it&#8217;s from a hardware failure. Perhaps it&#8217;s from a cyberattack. Unfortunately, user error is the cause of many data disasters. This is where backups that meet your Recovery Point Objectives (RPOs) and Recovery Time Objectives (RTOs) come into play.</p>



<p class="wp-block-paragraph">But backing up data isn’t enough—you need to document and regularly test your recovery process to confirm that backups work as expected. Without this testing, even the best backup strategies can fall short when you need them most.</p>



<p class="wp-block-paragraph">An untested backup is only the hope of recovery. Unfortunately, hope is not a strategy.</p>



<h4 class="wp-block-heading" id="h-2-security-audits-and-vulnerability-scans">2. Security audits and vulnerability scans</h4>



<p class="wp-block-paragraph">Cyberattacks are a growing threat, so regular security audits are an essential tool to prevent unauthorized access and data breaches.</p>



<p class="wp-block-paragraph">Security audits identify weaknesses in your SQL Server environment, allowing the vulnerabilities to be remediated before they are exploited. </p>



<p class="wp-block-paragraph">Conducting vulnerability assessments, such as the <a href="https://www.cisecurity.org/benchmark/microsoft_sql_server">CIS Benchmark Assessment for SQL Server,</a> and updating your security policies can help strengthen your security posture and protect sensitive data. If you&#8217;re not familiar with the CIS Benchmarks, we can work with you to assess your environment and identify any security gaps in your SQL estate.</p>



<h4 class="wp-block-heading" id="h-3-monitoring-and-auditing-for-anomalies">3. Monitoring and auditing for anomalies</h4>



<p class="wp-block-paragraph">Who has access to your SQL Server? Who has elevated permissions? When were they granted those permissions? And by whom? You&#8217;re going to want to know the answer to these questions.</p>



<p class="wp-block-paragraph">So, keeping a close eye on your SQL Server environment is essential. Monitoring and auditing tools allow you to track unusual behavior, such as spikes in access attempts or unexpected changes in database structure. SQL Server has a built-in feature called <a href="https://learn.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-ver16" target="_blank" rel="noreferrer noopener">SQL Audit</a> that can help. </p>



<p class="wp-block-paragraph">Catching these red flags early can help you address potential security breaches before they become full-blown incidents. </p>



<h4 class="wp-block-heading" id="h-4-data-encryption-and-access-controls">4. Data encryption and access controls</h4>



<p class="wp-block-paragraph">If you have sensitive data such as Personally Identifiable Information, Personal Health Information, or financial information, you should consider encrypting your data and backups. </p>



<p class="wp-block-paragraph">Data encryption prevents unauthorized users from reading sensitive information, even if they gain access to it. Check out <a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/transparent-data-encryption-tde-overview?view=azuresql&amp;tabs=azure-portal" target="_blank" rel="noreferrer noopener">SQL Server Transparent Data Encryption</a> to learn more.</p>



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



<p class="wp-block-paragraph">Disaster recovery and security are essential practices for Microsoft SQL Server. For sectors like healthcare and banking, where data security and recoverability are non-negotiable, investing in these measures is a critical safeguard.</p>



<h3 class="wp-block-heading" id="h-download-a-sql-server-security-self-assessment">Download a SQL Server Security Self-Assessment</h3>



<p class="wp-block-paragraph">Securing your SQL Server is important, but knowing where to start that process can be the biggest challenge. So, we created our <a href="https://theserogroup.com/download-self-assessment/">free SQL Server Security Self-Assessment</a> to help you begin the process of identifying potential gaps in your security posture.</p>



<h3 class="wp-block-heading" id="h-consider-a-sql-health-check-or-cis-benchmark-assessment">Consider a SQL Health Check or CIS Benchmark Assessment</h3>



<p class="wp-block-paragraph">If you&#8217;d like to know more about how The SERO Group can help assess your SQL Server estate with a <a href="https://theserogroup.com/sql-health-check/">SQL Health Check</a> or a CIS Benchmark Assessment, <a href="https://theserogroup.com/contact-us/" target="_blank" rel="noreferrer noopener">schedule a no-obligation discovery call</a> with us.</p>



<h3 class="wp-block-heading" id="h-looking-for-more-information">Looking for more information? </h3>



<p class="wp-block-paragraph">Here are a few links that will help.</p>



<ul class="wp-block-list">
<li><a href="https://theserogroup.com/sql-server-resources/sql-server-security-best-practices/">SQL Server Security Best Practices</a></li>



<li><a href="https://theserogroup.com/sql-server-resources/protecting-sql-server-from-ransomware/">Protecting Your SQL Server from Ransomware</a> </li>



<li><a href="https://theserogroup.com/sql-server/securing-your-sql-servers-what-should-you-audit/">Securing Your SQL Servers, What Should You Audit?</a></li>



<li><a href="https://learn.microsoft.com/en-us/sql/relational-databases/security/sql-server-security-best-practices?view=sql-server-ver16">SQL Server security best practices &#8211; Microsoft</a> </li>
</ul>
<p>The post <a href="https://theserogroup.com/sql-server/sql-server-disaster-recovery-four-essential-security-measures/">SQL Server Disaster Recovery: Four Essential Security Measures</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6837</post-id>	</item>
		<item>
		<title>Basic Availability Groups: Affordable High Availability with Key Limitations</title>
		<link>https://theserogroup.com/sql-server/basic-availability-groups-affordable-high-availability-with-key-limitations/</link>
		
		<dc:creator><![CDATA[Luke Campbell]]></dc:creator>
		<pubDate>Thu, 19 Sep 2024 19:00:00 +0000</pubDate>
				<category><![CDATA[SQL Server]]></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 Events]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=6532</guid>

					<description><![CDATA[<p>In SQL Server 2022, Basic Availability Groups provide a limited, cost-effective solution for high availability and disaster recovery in the Standard Edition. However, they have several limitations when compared to a standard Availability Group in the Enterprise Edition. Although Basic AGs were introduced before SQL Server 2022, we&#8217;ll focus strictly on the latest version. Let&#8217;s&#8230; <br /> <a class="read-more" href="https://theserogroup.com/sql-server/basic-availability-groups-affordable-high-availability-with-key-limitations/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/sql-server/basic-availability-groups-affordable-high-availability-with-key-limitations/">Basic Availability Groups: Affordable High Availability with Key Limitations</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In SQL Server 2022, Basic Availability Groups provide a limited, cost-effective solution for high availability and disaster recovery in the Standard Edition. However, they have several limitations when compared to a standard Availability Group in the Enterprise Edition.</p>



<p class="wp-block-paragraph">Although Basic AGs were introduced before SQL Server 2022, we&#8217;ll focus strictly on the latest version.</p>



<p class="wp-block-paragraph">Let&#8217;s review the requirements and limitations.</p>



<h2 class="wp-block-heading" id="h-requirements-and-limitations">Requirements and Limitations</h2>



<h3 class="wp-block-heading" id="h-sql-server-edition-and-version"><strong>SQL Server Edition and Version</strong>:</h3>



<ul class="wp-block-list">
<li>Standard Edition: Both the primary and secondary replicas must be running SQL Server 2022 Standard Edition. Basic Availability Groups are unavailable in the Express, Web, or Enterprise editions.</li>



<li>Same Version: Ideally, all replicas should be running the same build of SQL Server 2022.</li>
</ul>



<p class="wp-block-paragraph">Verify the version by running <em>SELECT @@VERSION</em>. In the screenshot below, you can see which update has been applied and the SQL Server version and edition.</p>



<figure class="wp-block-image size-large is-resized"><a href="https://theserogroup.com/wp-content/uploads/2024/09/image.png"><img decoding="async" width="1024" height="157" src="https://theserogroup.com/wp-content/uploads/2024/09/image-1024x157.png" alt="" class="wp-image-6534" style="width:841px;height:auto" srcset="https://theserogroup.com/wp-content/uploads/2024/09/image-1024x157.png 1024w, https://theserogroup.com/wp-content/uploads/2024/09/image-300x46.png 300w, https://theserogroup.com/wp-content/uploads/2024/09/image-768x118.png 768w, https://theserogroup.com/wp-content/uploads/2024/09/image-1536x236.png 1536w, https://theserogroup.com/wp-content/uploads/2024/09/image-2048x315.png 2048w, https://theserogroup.com/wp-content/uploads/2024/09/image-1920x295.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h3 class="wp-block-heading" id="h-windows-server-failover-clustering-wsfc"><strong>Windows Server Failover Clustering (WSFC):</strong></h3>



<ul class="wp-block-list">
<li>Cluster Configuration: A Windows Server Failover Cluster must be configured. All nodes participating in the Basic Availability Group must be members of the same WSFC.</li>



<li>Operating System: The servers must be running a Windows Server version that supports failover clustering (e.g., Windows Server 2019 or 2022 recommended).</li>



<li>Domain Membership: All nodes must be members of the same Active Directory domain or trusted domains.</li>
</ul>



<p class="wp-block-paragraph">In our example, we have a two-node WSFC cluster using Windows Server 2022 Standard Edition.</p>



<figure class="wp-block-image size-large"><a href="https://theserogroup.com/wp-content/uploads/2024/09/image-1.png"><img loading="lazy" decoding="async" width="1024" height="262" src="https://theserogroup.com/wp-content/uploads/2024/09/image-1-1024x262.png" alt="" class="wp-image-6536" srcset="https://theserogroup.com/wp-content/uploads/2024/09/image-1-1024x262.png 1024w, https://theserogroup.com/wp-content/uploads/2024/09/image-1-300x77.png 300w, https://theserogroup.com/wp-content/uploads/2024/09/image-1-768x197.png 768w, https://theserogroup.com/wp-content/uploads/2024/09/image-1.png 1414w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<h3 class="wp-block-heading" id="h-network-requirements"><strong>Network Requirements:</strong></h3>



<ul class="wp-block-list">
<li>Connectivity: Reliable network connections between the replicas are essential.</li>



<li>Name Resolution: A proper DNS setup for name resolution between nodes is preferred.</li>



<li>Static IPs: It&#8217;s highly recommended all replicas utilize static IP addresses vs. DHCP-assigned IPs.</li>
</ul>



<h3 class="wp-block-heading" id="h-database-requirements"><strong>Database Requirements:</strong></h3>



<ul class="wp-block-list">
<li>Full Recovery Model: The database to be included in the Basic Availability Group must use the Full recovery model.</li>



<li>Single Database Support: Basic Availability Groups support only one user database per group.</li>



<li>Initialization: The database must be initialized on the secondary replica using a full backup and transaction log backups. Automatic seeding can be used as well.</li>
</ul>



<h3 class="wp-block-heading" id="h-replica-limitations"><strong>Replica Limitations:</strong></h3>



<ul class="wp-block-list">
<li>Number of Replicas: Only two replicas are supported. One primary and one secondary.</li>



<li>Secondary Replica Limitations
<ul class="wp-block-list">
<li>Non-Readable: The secondary replica is not accessible for read operations.</li>



<li>No backups: You cannot perform backups on the secondary replica.</li>



<li>Synchronous Commit: To support automatic failover, Availability Mode must be set to synchronous commit. This is also a requirement for standard Availability Groups.</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-large"><a href="https://theserogroup.com/wp-content/uploads/2024/09/image-2.png"><img loading="lazy" decoding="async" width="1024" height="958" src="https://theserogroup.com/wp-content/uploads/2024/09/image-2-1024x958.png" alt="" class="wp-image-6537" srcset="https://theserogroup.com/wp-content/uploads/2024/09/image-2-1024x958.png 1024w, https://theserogroup.com/wp-content/uploads/2024/09/image-2-300x281.png 300w, https://theserogroup.com/wp-content/uploads/2024/09/image-2-768x719.png 768w, https://theserogroup.com/wp-content/uploads/2024/09/image-2-1154x1080.png 1154w, https://theserogroup.com/wp-content/uploads/2024/09/image-2.png 1402w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<h3 class="wp-block-heading" id="h-licensing"><strong>Licensing:</strong></h3>



<ul class="wp-block-list">
<li>Proper Licensing: Ensure that all SQL Server instances are properly licensed under Microsoft&#8217;s licensing terms for high-availability setups. See Microsoft&#8217;s licensing documentation for full details (<a href="https://www.microsoft.com/en-us/sql-server/sql-server-2022-pricing?msockid=3982f2b2d9326c420161e11ed8526d16">SQL Server 2022—Pricing | Microsoft</a>).</li>
</ul>



<h3 class="wp-block-heading" id="h-permissions-and-roles"><strong>Permissions and Roles:</strong></h3>



<ul class="wp-block-list">
<li>Service Accounts: To reduce complexity, it&#8217;s recommended to use the same SQL Server service account on both replicas. Consider using group managed service accounts for further simplification.</li>



<li>Firewall Settings: Configure Windows Firewall to allow communication between the replicas on the required ports (default is TCP port 5022).</li>
</ul>



<h3 class="wp-block-heading" id="h-endpoint-configuration"><strong>Endpoint Configuration:</strong></h3>



<ul class="wp-block-list">
<li>Database Mirroring Endpoint: This must be configured on each replica for data synchronization. If using the wizard in SSMS, the endpoint is created and configured.</li>
</ul>



<h3 class="wp-block-heading" id="h-quorum-configuration"><strong>Quorum Configuration:</strong></h3>



<ul class="wp-block-list">
<li>Proper quorum configuration is essential to maintain cluster health and support automatic failover.  This is done within the WSFC.</li>
</ul>



<h2 class="wp-block-heading" id="h-summary-of-limitations">Summary of Limitations</h2>



<ul class="wp-block-list">
<li>Single Database Limitation: Only one database can be included in a Basic Availability Group.</li>



<li>Limited to Two Replicas: Only one primary and one secondary replica are allowed.</li>



<li>No Read-Scale Capabilities: Unlike Availability Groups in Enterprise Edition, Basic Availability Groups do not support readable secondary replicas.</li>



<li>No Backup Offloading: Backups cannot be performed on the secondary replica.</li>
</ul>



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



<p class="wp-block-paragraph">Basic Availability Groups can fill the gap if your environment doesn&#8217;t support a WSFC with the shared disk. However, due to their limitation of supporting only one database, ongoing management of multiple Basic AGs may not be ideal. For example, I&#8217;d still use a failover clustered instance if any of the following were true:</p>



<ul class="wp-block-list">
<li>SQL Server Standard Edition is used.</li>



<li>Not spanning multiple data centers.</li>



<li>The environment allows for the use of shared disks between machines.</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 class="wp-block-paragraph">Want to learn more about how The SERO Group helps organizations take the guesswork out of managing their SQL Servers? <a href="https://theserogroup.com/contact-us/" target="_blank" rel="noreferrer noopener">Schedule a no-obligation discovery call</a>&nbsp;with us to get started.</p>
<p>The post <a href="https://theserogroup.com/sql-server/basic-availability-groups-affordable-high-availability-with-key-limitations/">Basic Availability Groups: Affordable High Availability with Key Limitations</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6532</post-id>	</item>
		<item>
		<title>Tracking Deprecated Features in SQL Server</title>
		<link>https://theserogroup.com/sql-server/tracking-deprecated-features-in-sql-server/</link>
		
		<dc:creator><![CDATA[Eric Cobb]]></dc:creator>
		<pubDate>Wed, 21 Aug 2024 12:00:00 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[Script Library]]></category>
		<category><![CDATA[Shared Disks]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=6472</guid>

					<description><![CDATA[<p>With each new release of SQL Server, we gain exciting new features—but also face the reality of deprecated features that should be phased out. Although these deprecated features aren’t immediately disabled, they won’t be supported in future SQL Server versions. Ideally, you should start removing them from your code now to avoid potential issues during&#8230; <br /> <a class="read-more" href="https://theserogroup.com/sql-server/tracking-deprecated-features-in-sql-server/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/sql-server/tracking-deprecated-features-in-sql-server/">Tracking Deprecated Features in SQL Server</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">With each new release of SQL Server, we gain exciting new features—but also face the reality of deprecated features that should be phased out. Although these deprecated features aren’t immediately disabled, they won’t be supported in future SQL Server versions. Ideally, you should start removing them from your code now to avoid potential issues during future upgrades.</p>



<p class="wp-block-paragraph"><em>Ideally. &nbsp;</em></p>



<p class="wp-block-paragraph">But let&#8217;s be honest—how often does that happen? Even if you’re committed to staying current, finding out which deprecated features are still in use can be a challenge. Fortunately, SQL Server tracks this information for you. Simply run the following query against&nbsp;<em><a href="https://msdn.microsoft.com/en-us/library/ms187743.aspx" target="_blank" rel="noreferrer noopener">sys.dm_os_performance_counters</a></em>&nbsp;to get a list of deprecated features and how many times each of them has been used.</p>



<pre class="wp-block-code"><code>SELECT  object_name, instance_name, cntr_value
FROM	sys.dm_os_performance_counters
WHERE   counter_name = 'Usage'</code></pre>



<p class="wp-block-paragraph">According to the MSDN doc on the <a href="https://msdn.microsoft.com/en-us/library/bb510662(v=sql.120).aspx" target="_blank" rel="noreferrer noopener">Deprecated Features Object</a>, doing this:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>provides a counter to monitor the features designated as deprecated. In each case the counter provides a usage count that lists the number of times the deprecated feature was encountered since SQL Server last started.</em></p>
<cite>Microsoft SQL Server, Deprecated Features object</cite></blockquote>



<p class="wp-block-paragraph">(That MSDN doc also has a description of what each of the deprecated features is, which is very useful.)</p>



<p class="wp-block-paragraph">While this won’t tell you&nbsp;<em>where</em>&nbsp;a deprecated feature is being used, it will tell you&nbsp;<em>which ones</em>&nbsp;are being used.&nbsp;Knowing which deprecated features are still in use is crucial when planning a migration to a new SQL Server release, especially if those features will no longer be supported. This insight helps prevent disruptions and ensures a smoother transition to the updated system.</p>



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



<p class="wp-block-paragraph">Want to learn more about how The SERO Group helps organizations take the guesswork out of managing their SQL Servers? <a href="https://theserogroup.com/contact-us/" target="_blank" rel="noreferrer noopener">Schedule a no-obligation discovery call</a>&nbsp;with us to get started.</p>
<p>The post <a href="https://theserogroup.com/sql-server/tracking-deprecated-features-in-sql-server/">Tracking Deprecated Features in SQL Server</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6472</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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph"><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 class="wp-block-paragraph"><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 class="wp-block-paragraph"><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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">Neither SQL MI nor SQL DB supports direct access to the file system or the Windows command line. </p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph"><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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">I hope this provided you with a jump-start for thinking about whether your SQL Server code is Azure-ready.</p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">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>Availability Groups: What&#8217;s Right for Your Business?</title>
		<link>https://theserogroup.com/sql-server/availability-groups-whats-right-for-you/</link>
		
		<dc:creator><![CDATA[Luke Campbell]]></dc:creator>
		<pubDate>Wed, 19 Jun 2024 12:00:00 +0000</pubDate>
				<category><![CDATA[SQL Server]]></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[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 Consultant]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=6008</guid>

					<description><![CDATA[<p>I&#8217;ve had several companies inquire about SQL Server&#8217;s built-in high availability options over the years. This conversation usually indicates a need to ensure that their database systems remain operational and accessible with minimal downtime. But why now? They&#8217;ve been in business for years and are just now interested in HA/DR. What changed? Reasons vary, but&#8230; <br /> <a class="read-more" href="https://theserogroup.com/sql-server/availability-groups-whats-right-for-you/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/sql-server/availability-groups-whats-right-for-you/">Availability Groups: What&#8217;s Right for Your Business?</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I&#8217;ve had several companies inquire about SQL Server&#8217;s built-in high availability options over the years.  This conversation usually indicates a need to ensure that their database systems remain operational and accessible with minimal downtime.  </p>



<p class="wp-block-paragraph">But why now? They&#8217;ve been in business for years and are just now interested in HA/DR. What changed?</p>



<p class="wp-block-paragraph">Reasons vary, but the following are very common:</p>



<ul class="wp-block-list">
<li>A new cyber insurance policy requiring a HA/DR or business continuity plan.</li>



<li>A need for HA/DR capability in order to create or develop a new revenue stream.</li>



<li>General curiosity due to SQL Server marketing materials.</li>



<li>A new client or business group who has asked about HA/DR.</li>



<li>Concerns raised during a recent audit.</li>



<li>Recent outage that impacted revenue.</li>
</ul>



<p class="wp-block-paragraph">SQL Server has several options to choose from when it comes to HA/DR.  These include:</p>



<ul class="wp-block-list">
<li>Log Shipping: No automatic failover capabilities. Available on SQL Server Standard and Enterprise editions.</li>



<li>Database Mirroring: Deprecated, don&#8217;t use it in new environments.</li>



<li><a href="https://theserogroup.com/sql-server/azure-shared-disks-failover-clustered-instances/">Failover Cluster Instances</a>: Available on SQL Server Standard and Enterprise editions.
<ul class="wp-block-list">
<li><a href="https://theserogroup.com/sql-server/whats-the-difference-in-sql-server-fcis-and-ags/">What&#8217;s the Difference in SQL Server FCIs and AGs?</a></li>
</ul>
</li>



<li>Availability Groups</li>
</ul>



<p class="wp-block-paragraph">Since you&#8217;re here to learn more about availability groups, I&#8217;ll introduce you to the two main types.</p>



<h2 class="wp-block-heading" id="h-availability-groups">Availability Groups</h2>



<p class="wp-block-paragraph">Availability Groups were introduced in SQL Server 2012 Enterprise Edition. They provide advanced high availability and disaster recovery capabilities.</p>



<ul class="wp-block-list">
<li><strong>Edition Support: </strong>Available in SQL Server 2012 Enterprise Edition and later. FYI: Official support for SQL Server 2012 ended in 2022.</li>



<li><strong>Number of Replicas: </strong>SQL Server 2022 specs &#8211; One primary and up to 8 secondary replicas (under <a href="https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/availability-modes-always-on-availability-groups?view=sql-server-ver16#SupportedAvModes">asynchronous-commit mode or up to 5 can run under synchronous-commit mode</a>).</li>



<li><strong>Supports readable secondaries: </strong>Yes</li>



<li><strong>Failover: </strong>Supports automatic failover for synchronous-commit replicas and manual failover for asynchronous-commit replicas.</li>



<li><strong>Use Cases: </strong>
<ul class="wp-block-list">
<li>Ideal for mission-critical applications requiring high availability and disaster recovery across multiple databases.  </li>



<li>Suitable for enterprises needing advanced features like read-only secondary replicas for offloading read workloads.</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading" id="h-requirements">Requirements:</h3>



<ul class="wp-block-list">
<li>Same OS version on all nodes.</li>



<li>Proper network infrastructure to support data replication with minimal latency.</li>



<li>Windows Server Failover Clustering (WSFC).  There are some exceptions to this that I&#8217;ll cover in a later post.</li>



<li>SQL Server 2019 Enterprise Edition or later. Available with earlier versions, but those are out of mainstream support. I wouldn&#8217;t want you building a new AG on unsupported versions. In fact, that would almost certainly raise flags in other areas of your cyber insurance policy.</li>
</ul>



<h2 class="wp-block-heading" id="h-basic-availability-groups">Basic Availability Groups</h2>



<p class="wp-block-paragraph">Up until SQL Server 2016, AGs were only available in Enterprise Edition. However, in 2016, Microsoft introduced us to Basic Availability Groups. Basic AGs provide an introduction to high availability and disaster recovery solutions for a single database.</p>



<ul class="wp-block-list">
<li><strong>Edition Support: </strong>Available in SQL Server 2016 Standard Edition and later.</li>



<li><strong>Number of Replicas: </strong>Supports two replicas (one primary and one secondary).</li>



<li><strong>Supports readable secondaries: </strong>No.  See the limitations <a href="https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/basic-availability-groups-always-on-availability-groups?view=sql-server-ver16#limitations">here</a>.</li>



<li><strong>Failover: </strong>Supports automatic failover, but only in a single-database environment.</li>



<li><strong>Use Cases: </strong>
<ul class="wp-block-list">
<li>Ideal for small businesses or environments where budget constraints prevent the use of Enterprise Edition.  </li>



<li>Suitable for applications that require minimal HA/DR capabilities.  </li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading" id="h-requirements-0">Requirements:</h3>



<ul class="wp-block-list">
<li>Same OS version on both nodes.</li>



<li>SQL Server 2016 Standard Edition or later.</li>



<li>Windows Server Failover Clustering (WSFC)</li>



<li>Proper network infrastructure to support data replication with minimal latency.</li>
</ul>



<h2 class="wp-block-heading" id="h-which-should-you-choose">Which should you choose?</h2>



<p class="wp-block-paragraph">Getting AGs right takes practice. When done wrong, performance and availability can both suffer. Budgets can be destroyed by licenses. Understanding your options, including their requirements and differences, can help you choose the right solution for your environment. Whether you&#8217;re driven by audits, insurance policies, or those uncomfortable &#8220;could not open a connection to SQL Server&#8221; errors, investing in HA/DR solutions is crucial for maintaining business continuity and minimizing downtime.</p>



<p class="wp-block-paragraph">So, which would I choose? If I had the option to use shared storage, I&#8217;d opt for building a failover clustered instance instead of using a Basic AG. FCIs support failover of multiple databases and can be used with Standard Edition. However, if shared storage isn&#8217;t an option and you need automatic failover capabilities for a single database or if you&#8217;re working in a hybrid environment (Azure and on-premises), Basic AGs may be a good choice for you.</p>



<p class="wp-block-paragraph">Have questions about HA/DR? Here are two ways we can help.</p>



<ol class="wp-block-list">
<li><a href="https://theserogroup.com/#contact">Schedule a call with us</a> to connect with our consultants. We&#8217;ve helped numerous clients just like you meet their uptime objectives.</li>



<li>Consider <a href="https://theserogroup.com/seroshield/">SEROShield</a>, our DBA team as a service. Not only will we help build the AG, but we&#8217;ll also support it. It&#8217;ll be like driving around in a new car (you know, the one with the new car smell) that you know is covered by the best possible insurance.</li>
</ol>



<h2 class="wp-block-heading" id="h-next-in-this-series">Next in this series</h2>



<p class="wp-block-paragraph">There are a few lesser-known availability group types that we didn&#8217;t discuss today but will in upcoming posts: Contained AGs, Distributed AGs, and Domain-independent AGs.</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/company/the-sero-group">Follow us on LinkedIn</a> to get notified when we release new blog posts. </p>
<p>The post <a href="https://theserogroup.com/sql-server/availability-groups-whats-right-for-you/">Availability Groups: What&#8217;s Right for Your Business?</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6008</post-id>	</item>
		<item>
		<title>SQL Server Settings: Memory Configuration</title>
		<link>https://theserogroup.com/sql-server/sql-server-settings-memory-configuration/</link>
		
		<dc:creator><![CDATA[Eric Cobb]]></dc:creator>
		<pubDate>Wed, 29 May 2024 12:00:00 +0000</pubDate>
				<category><![CDATA[SQL Server]]></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 Audit]]></category>
		<category><![CDATA[SQL Conference]]></category>
		<category><![CDATA[SQL Events]]></category>
		<category><![CDATA[SQL Server Management]]></category>
		<guid isPermaLink="false">https://theserogroup.com/?p=5890</guid>

					<description><![CDATA[<p>SQL Server is designed to efficiently manage memory on its own. It requests memory when it&#8217;s needed and releases memory back to the system when it&#8217;s not. However, the default settings may not be ideal for your situation. An experienced database administrator will usually fine-tune these settings to optimize performance and server stability. Minimum server&#8230; <br /> <a class="read-more" href="https://theserogroup.com/sql-server/sql-server-settings-memory-configuration/">Read more</a></p>
<p>The post <a href="https://theserogroup.com/sql-server/sql-server-settings-memory-configuration/">SQL Server Settings: Memory Configuration</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">SQL Server is designed to efficiently manage memory on its own. It requests memory when it&#8217;s needed and releases memory back to the system when it&#8217;s not. However, the default settings may not be ideal for your situation. An experienced database administrator will usually fine-tune these settings to optimize performance and server stability.</p>



<h2 class="wp-block-heading" id="h-minimum-server-memory">Minimum server memory</h2>



<p class="wp-block-paragraph">The minimum server memory setting in SQL Server determines the smallest amount of RAM that SQL Server will grab. SQL Server will always have at least this much memory available to use, even when the system is under heavy load. The default setting for minimum server memory is usually very low, and SQL Server dynamically adjusts its memory usage based on its workload.</p>



<h2 class="wp-block-heading" id="h-maximum-server-memory">Maximum server memory</h2>



<p class="wp-block-paragraph">The maximum server memory setting in SQL Server limits how much of your computer&#8217;s memory SQL Server can access. By default, SQL Server grabs as much memory as possible, which can lead to problems. If SQL Server takes up all the available RAM, it slows down other programs running on the same server (such as SSIS, SSRS, or SSAS), making everything feel sluggish. </p>



<h2 class="wp-block-heading" id="h-configuring-minimum-server-memory">Configuring minimum server memory</h2>



<p class="wp-block-paragraph">Configuring minimum server memory is usually easy because, in most cases, it&#8217;s best to leave it set to the default. Sometimes people will set the minimum and maximum server memory settings to the same value to &#8220;lock in&#8221; the memory. I&#8217;ve seen this in virtualized environments as an attempt to prevent the hypervisor from &#8220;ballooning&#8221; and taking away the resources that are supposed to be allocated to SQL Server. The risk with this type of configuration is that during a restart, SQL Server will not come online until it has claimed all of the RAM listed in the minimum server memory setting.</p>



<p class="wp-block-paragraph">You can configure your server&#8217;s minimum server memory setting in SQL Server Management Studio. Find the server properties section, then look for the minimum server memory option.</p>



<p class="wp-block-paragraph">You can also make this change by running the following script:</p>



<pre class="wp-block-code has-medium-font-size"><code>sp_configure 'min server memory', &lt;desired memory amount (mb)&gt;;
GO</code></pre>



<h2 class="wp-block-heading" id="h-configuring-maximum-server-memory">Configuring maximum server memory</h2>



<p class="wp-block-paragraph">The default maximum server memory<strong> </strong>setting can sometimes cause performance issues. By limiting the RAM SQL Server uses, you can ensure there&#8217;s enough memory for the operating system and other applications to run smoothly.</p>



<p class="wp-block-paragraph">Honing in on the exact number can be tricky, as it depends greatly on the load your SQL Server is under, as well as any other applications that may be running on it. However, configuring the maximum server memory appropriately ensures SQL Server has enough memory to perform efficiently without starving the operating system or other applications of the resources they need. This balance helps maintain system stability and performance.</p>



<p class="wp-block-paragraph">For example, if you have SSAS installed on the SQL Server, by default it will claim 20% of the RAM on the server, leaving only 80% available for SQL. I&#8217;ve seen scenarios where SQL Server crashed with an &#8220;insufficient system memory&#8221; error every time it tried to go above 80% RAM usage because SSAS refused to release its 20%.</p>



<p class="wp-block-paragraph">To configure maximum server memory, start by following the same steps as you did above. You can configure your server&#8217;s minimum server memory setting in SQL Server Management Studio. Find the server properties section, then look for the maximum server memory option.</p>



<p class="wp-block-paragraph">You can also make this change by running the following script:</p>



<pre class="wp-block-code has-medium-font-size"><code>sp_configure 'max server memory', &lt;desired memory amount (mb)&gt;;
GO</code></pre>



<h2 class="wp-block-heading" id="h-final-thoughts-and-next-steps">Final thoughts and next steps</h2>



<p class="wp-block-paragraph">Although SQL Server will manage its memory dynamically right out of the box, its default settings may not suit every scenario. Fine-tuning minimum and maximum memory settings means efficient server performance without depriving the operating system and other applications of resources. Careful memory configuration can help you achieve an optimized and balanced server environment.</p>



<h3 class="wp-block-heading" id="h-further-reading">Further reading</h3>



<ul class="wp-block-list">
<li><a href="https://www.brentozar.com/archive/2018/11/how-much-memory-is-normal-for-sql-servers/">How Much Memory is “Normal” for SQL Servers? &#8211; Brent Ozar</a></li>



<li><a href="https://learn.microsoft.com/en-us/sql/relational-databases/memory-management-architecture-guide?view=sql-server-ver16">Memory management architecture guide &#8211; Microsoft Learn</a></li>
</ul>



<h3 class="wp-block-heading" id="h-previously-in-this-series">Previously in this series</h3>



<ul class="wp-block-list">
<li><a href="https://theserogroup.com/sql-server/sql-server-settings-maxdop/">SQL Server Settings: MAXDOP</a></li>



<li><a href="https://theserogroup.com/sql-server/sql-server-settings-optimize-for-ad-hoc-workloads/">SQL Server Settings: Optimize For Ad-hoc Workloads</a></li>
</ul>



<h3 class="wp-block-heading" id="h-work-with-us">Work with us</h3>



<p class="wp-block-paragraph">Want help optimizing your SQL Servers? <a href="https://theserogroup.com/#testimonials">Schedule a free call with us</a> to learn more and get started!</p>
<p>The post <a href="https://theserogroup.com/sql-server/sql-server-settings-memory-configuration/">SQL Server Settings: Memory Configuration</a> appeared first on <a href="https://theserogroup.com">The SERO Group</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5890</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 class="wp-block-paragraph">&#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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 loading="lazy" 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="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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>
	</channel>
</rss>
