<?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>Edwin M SarmientoThe Feature Was There All Along &#8211; Edwin M Sarmiento</title>
	<atom:link href="https://www.edwinmsarmiento.com/the-feature-was-there-all-along/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.edwinmsarmiento.com</link>
	<description>Intentional Excellence</description>
	<lastBuildDate>Mon, 13 Apr 2026 21:00:49 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
<site xmlns="com-wordpress:feed-additions:1">84283043</site>		<item>
		<title>The Feature Was There All Along</title>
		<link>https://www.edwinmsarmiento.com/the-feature-was-there-all-along/</link>
		<comments>https://www.edwinmsarmiento.com/the-feature-was-there-all-along/#respond</comments>
		<pubDate>Wed, 09 Mar 2016 01:38:28 +0000</pubDate>
		<dc:creator>Edwin M Sarmiento</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[MultiSubnetFailover]]></category>
		<category><![CDATA[SQL Server Availability Groups]]></category>
		<category><![CDATA[SQL Server Native Client 11]]></category>
		<guid isPermaLink="false">http://www.edwinmsarmiento.com/?p=2557</guid>

				<description><![CDATA[Five Things That You Need To Consider When Deploying SQL Server Availability Group Replicas in a Disaster Recovery Site - Part 5. SQL Server Availability Groups have been around for a while. But not a lot of organizations have implemented them yet mainly because they haven’t upgraded their database platforms to SQL Server 2012/2014. As more and more organizations move away from older versions and into the newer ones, Availability Groups will become much more common. And [&#8230;]]]></description>
					<content:encoded><![CDATA[<p><em id="gnt_postsubtitle" style="color:#770005;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:1.3em;line-height:1.2em;font-weight:normal;font-style:italic;">Five Things That You Need To Consider When Deploying SQL Server Availability Group Replicas in a Disaster Recovery Site - Part 5</em></p> <img width="760" height="537" src="https://www.edwinmsarmiento.com/wp-content/uploads/2016/03/MultiSubnetClientApp-760x537.jpg" class="featured-image wp-post-image" alt="" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2016/03/MultiSubnetClientApp-760x537.jpg 760w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/03/MultiSubnetClientApp-300x212.jpg 300w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/03/MultiSubnetClientApp-768x543.jpg 768w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/03/MultiSubnetClientApp-518x366.jpg 518w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/03/MultiSubnetClientApp-82x58.jpg 82w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/03/MultiSubnetClientApp-600x424.jpg 600w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/03/MultiSubnetClientApp.jpg 794w" sizes="(max-width: 760px) 100vw, 760px" /><p>SQL Server Availability Groups have been around for a while. But not a lot of organizations have implemented them yet mainly because they haven’t upgraded their database platforms to SQL Server 2012/2014. As more and more organizations move away from older versions and into the newer ones, Availability Groups will become much more common. And with the Basic Availability Groups feature coming up in SQL Server 2016 Standard Edition, it will eventually become a viable replacement for the already deprecated Database Mirroring feature.</p>
<div style="background-color:#eeeeee;border:1px solid #D6D6D6;font-family:arial,helvetica,sans-serif;font-size:15px;line-height:20px;margin:8px 0 20px;padding:15px 20px;">This blog post is the final installation in a series that talks about the five things that you need to consider when deploying SQL Server Availability Group Replicas in a Disaster Recovery Site</div>
<p>In the <a href="https://www.edwinmsarmiento.com/five-things-that-you-need-to-consider-when-deploying-sql-server-availability-groups-1/" target="_blank">first installation in this series</a>, I talked about how Active Directory Domain Services (ADDS) authentication and replication affect a SQL Server Availability Group (AG) implementation in a disaster recovery (DR) site. The <a href="https://www.edwinmsarmiento.com/much-ado-about-dns/" target="_blank">second installation in this series</a> is about Domain Name System (DNS.) The <a href="https://www.edwinmsarmiento.com/the-lifeblood-across-the-wire/" target="_blank">third installation</a> was all about the Windows Server Failover Cluster (WSFC) heartbeat and how intra-node communications affect the overall health of the WSFC. The <a href="https://www.edwinmsarmiento.com/every-vote-matters-in-your-sql-server-ag" target="_blank">fourth one</a> covered how <strong><a href="http://learnsqlserverhadr.com/course/deep-dive-on-windows-server-failover-cluster-quorum/" target="_blank">quorum</a> </strong>and the voting members in a WSFC affects the overall availability.</p>
<p>We&#8217;ve managed to setup and configure Active Directory Domain Services (ADDS,) DNS, the networking, the Windows Server Failover Cluster (WSFC) heartbeat and quorum for a SQL Server Availability Group that stretches across data centers. The one final piece that we need to consider is the client application connectivity. Besides, there&#8217;s no sense in preparing a party without inviting any guests. Your databases need to be available to any client application in order to perform transactions, especially during a disaster recovery (DR) situation.</p>
<h2>Client Application Connectivity in a Single Data Center Deployment</h2>
<p>In a single data center deployment, we barely paid attention to this (well, by now we&#8217;ve pretty much proved the point that we barely paid attention to any of the five things we covered in this series.) The developers write the application code, provide the database instance name and connect the application. If you ask any application developer how much time they spend thinking about and connecting the application to the database, I bet the common response would be “less than an hour.” That’s because when they start learning about database programming, they only need to know these things in order to connect to the database:</p>
<ul>
<li> Database driver (needed to connect to the specific database platform – be it Oracle, SQL Server, DB2, etc.)</li>
<li> Database server name</li>
<li> Database name</li>
<li> Credentials</li>
</ul>
<p>So long as they can connect to the database, they immediately forget about it. In fact, I bet they will tell you that they probably spend more time trying to make the database drivers work – like installing the correct version, 32-bit versus 64-bit, conflicts with other existing database drivers, etc. &#8211; than writing the connection string. Same thing goes when dealing with a third-party, off-the-shelf application.</p>
<p>Even systems and database administrators barely paid attention to this. They spend more time making sure that the client application can connect to the database server – opening firewall ports, guaranteeing server name resolution, proper network routing, permissions, etc.</p>
<p>I should know. I was on both sides of the camp in my previous life. And, yes, I didn’t even bother thinking about connection strings. I let the developer tool do that for me.</p>
<h2>Client Application Connectivity in a Multi-Data Center Deployment</h2>
<p>In a multi-data center deployment, we need to make sure that the client application can still connect to the database when a failover needs to happen, especially in a DR situation. In the past, the typical architecture involved using a DNS alias that points to the database server. The IP address of the database server in the production data center is used to map to the DNS alias. When a failover occurred, the DNS alias is updated with the IP address of the database server in the DR data center. This then required updating the client application’s DNS time-to-live (TTL) value to meet the recovery objective. If the client application connects to a middle-tier, the middle-tier’s DNS TTL value is also updated. Imagine the amount of work that goes into that if you need to deal with thousands of client applications and several other middle-tier servers. This was one of the driving motivations behind moving applications to a more web-based architecture and eventually towards a software-as-a-service (SaaS) one.</p>
<p>Only in the past decade did support for multi-subnet, geographically dispersed clusters were introduced. Windows Server 2008 was the first version of Microsoft’s server operating system that introduced support for multi-subnet WSFC. The OR logic dependency in the WSFC allowed the use of multiple virtual IP addresses for a network name resource, allowing client application to connect to any available IP address.</p>
<h2>The Feature Was There All Along</h2>
<p>When I got my Samsung S5 phone last year, I didn’t know that there was a feature called <em><strong>Do Not Disturb</strong></em>. So, I ended up leaving my phone in my home office before going to bed. I did not want to get “disturbed” by notifications and messages that came in while I was sleeping. After almost a year of using my phone, I discovered the <em><strong>Do Not Disturb</strong></em> feature. I wish I would have known about it earlier. Now, I just enable the feature between 10:00 PM and 8:00AM and leave it beside my bed instead of in my home office.</p>
<p>If you’re running SQL Server 2012 or higher failover clustered instances (FCI) and Availability Groups, you already have the multi-subnet WSFC feature available to you. But just because the feature is there doesn’t mean you’re already using it. Sure, you can configure the DNS TTL value and modify the <strong>RegisterAllProvidersIP</strong> property value of the Availability Group Listener Name but that won’t guarantee that the client application will know how to respond. You need to tell it to.</p>
<h2>Configuring Client Applications to Support Multi-Subnet Connectivity</h2>
<p>By default, when a client application queries the DNS for the Availability Group Listener Name, it will try to connect to the first virtual IP address available. Legacy client applications may not have reconnection logic to try all of the virtual IP addresses assigned to an Availability Group Listener Name and, therefore, will not be able to establish connectivity to the database server. This translates to system unavailability from the client application’s point of view even when the Availability Group is online and available. In order for client applications to support handling multiple virtual IP addresses for an Availability Group Listener Name and eventually be automatically redirected during a failover to a DR data center, they need to be using at least any of the following database drivers.</p>
<p>• the <a href="https://msdn.microsoft.com/en-us/library/ms131321.aspx" target="_blank">SQL Server Native Client 11.0</a><br />
• the <a href="https://support.microsoft.com/en-us/kb/2544514" target="_blank">Data Provider for SQL Server in .NET Framework 4.02</a><br />
• the Microsoft JDBC Driver 4.0 for SQL Server</p>
<p>A new connection string attribute named <strong><a href="https://msdn.microsoft.com/en-us/library/hh205662(v=vs.110).aspx" target="_blank">MultiSubnetFailover</a></strong> is made available to allow client applications to try all the virtual IP addresses assigned to an Availability Group Listener Name and connects to the first one that responds. In a DR situation, if the virtual IP address assigned to the production database server is unavailable, the client application can try to connect to the virtual IP address assigned to the DR database server, assuming that it is already online. This improves client applications’ connectivity after a failover and, therefore, reduce overall system downtime. No more updating of DNS aliases and client application’s DNS TTL values. As a SQL Server DBA, you can even use the <strong><a href="https://msdn.microsoft.com/en-us/library/hh205662(v=vs.110).aspx" target="_blank">MultiSubnetFailover</a></strong> attribute when connecting to your Availability Groups via SQL Server Management Studio.</p>
<p><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-3270" src="https://www.edwinmsarmiento.com/wp-content/uploads/2016/03/2762_XXXX_17.jpg" alt="" width="410" height="483" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2016/03/2762_XXXX_17.jpg 410w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/03/2762_XXXX_17-255x300.jpg 255w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/03/2762_XXXX_17-340x400.jpg 340w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/03/2762_XXXX_17-82x97.jpg 82w" sizes="(max-width: 410px) 100vw, 410px" /></p>
<p>Legacy client applications need to update their client libraries to support the MultiSubnetFailover attribute. The downside to this is that your application developers might not speak to you for a while because you have just given them additional work to do – updating the database driver, rewriting database connection strings to include the <strong><a href="https://msdn.microsoft.com/en-us/library/hh205662(v=vs.110).aspx" target="_blank">MultiSubnetFailover</a></strong> attribute and testing the application. But don’t worry about it because they’ll get over it soon because their managers will probably give them more work than you did.</p>
<h2>Summary</h2>
<p>If you are working with a SQL Server Availability Group that spans multiple data centers, check if you already have your database drivers and client applications’ connection strings updated. If not, plan to get them updated. You want to make sure that your client applications can still connect to the databases in the event of a DR situation.</p>
<hr />
<h2>Feeling helpless and confused when dealing with Windows Server Failover Clustering  (WSFC) for your SQL Server databases?</h2>
<p>You&#8217;re not alone. I&#8217;ve heard the same thing from thousands of SQL Server administrators throughout my entire career. These are just a few of them.</p>
<p><span style="color: #0000ff;"><em>&#8220;How do I properly size the server, storage, network and all the AD settings which we do not have any control over?&#8221;</em></span></p>
<p><span style="color: #0000ff;"><em>&#8220;I don&#8217;t quite understand how the Windows portion of the cluster operates and interacts with what SQL controls.&#8221;</em></span></p>
<p><span style="color: #0000ff;"><em>&#8220;I&#8217;m unfamiliar with multi-site clustering.&#8221;</em></span></p>
<p><span style="color: #0000ff;">&#8220;<em>Our servers are setup and configured by our parent company, so we don&#8217;t really get much experience with setting up Failover Clusters.</em>&#8220;</span></p>
<p>If you feel the same way, then, this course is for you. It&#8217;s a simple and easy-to-understand way for you to learn and master how Windows Server Failover Clusters can keep your SQL Server databases highly available. Be confident in designing, building and managing SQL Server databases running on Windows Server Failover Clusters.</p>
<p>But don&#8217;t take my word for it. Here&#8217;s what my students have to say about the course.</p>
<p><span style="color: #0000ff;"><em>&#8220;The techniques presented were very valuable, and used them the following week when I was paged on an issue.&#8221;</em></span></p>
<p><span style="color: #0000ff;"><em>&#8220;Thanks again for giving me confidence and teaching all this stuff about failover clusters.&#8221;</em></span></p>
<p><span style="color: #0000ff;"><em>&#8220;I’m so gladdddddd that I took this course!!&#8221;</em></span></p>
<p><span style="color: #0000ff;"><em>&#8220;Now I got better knowledge to setup the Windows FC ENVIRONMENT (DC) for SQL Server FCI and AlwaysON.&#8221;</em></span></p>
<div style="background-color:#eeeeee;border:1px solid #D6D6D6;font-family:arial,helvetica,sans-serif;font-size:15px;line-height:20px;margin:8px 0 20px;padding:15px 20px;"><span style="color: #800000;"><strong>NOTE:</strong></span> Registration for my online course <a href="https://learnsqlserverhadr.com/" target="_blank" rel="noopener"><span style="color: #800000;"><strong>Windows Server Failover Clustering (WSFC) for the Smart SQL Server DBA</strong></span></a> will re-open in <span style="color: #0000ff;"><strong>January 2018</strong></span>. But be sure you do not miss out. This will be the last time that the course will be offered. After this, you will no longer be able to register for the course.</div>
<hr />
<div style="background-color:#eeeeee;border:1px solid #D6D6D6;font-family:arial,helvetica,sans-serif;font-size:15px;line-height:20px;margin:8px 0 20px;padding:15px 20px;"></p>
<p><!-- Begin MailChimp Signup Form --></p>
<style type="text/css">
	#mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; }<br />	/* Add your own MailChimp form style overrides in your site stylesheet or in this style block.<br />	   We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */<br /></style>
<p>&nbsp;</p>
<div id="mc_embed_signup">
<form id="mc-embedded-subscribe-form" class="validate" action="//EdwinMSarmiento.us4.list-manage.com/subscribe/post?u=08cdb91518ee67ce09d618509&amp;id=46cff8469f" method="post" name="mc-embedded-subscribe-form" novalidate="" target="_blank">
<div id="mc_embed_signup_scroll">
<h2>Get notified about the next batch of enrollment so you don&#8217;t miss out.</h2>
<div class="indicates-required"><span class="asterisk">*</span> indicates required</div>
<div class="mc-field-group"><label for="mce-EMAIL">Email Address <span class="asterisk">*</span><br />
</label><br />
<input id="mce-EMAIL" class="required email" name="EMAIL" type="email" value="" /></div>
<div class="mc-field-group"><label for="mce-FNAME">First Name </label><br />
<input id="mce-FNAME" class="" name="FNAME" type="text" value="" /></div>
<div id="mce-responses" class="clear"></div>
<p><!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups--></p>
<div style="position: absolute; left: -5000px;" aria-hidden="true"><input tabindex="-1" name="b_08cdb91518ee67ce09d618509_46cff8469f" type="text" value="" /></div>
<div class="clear"><input id="mc-embedded-subscribe" class="button" name="subscribe" type="submit" value="Keep me updated!" /></div>
</div>
</form>
</div>
<p><script type='text/javascript' src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js'></script><script type='text/javascript'>(function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';}(jQuery));var $mcj = jQuery.noConflict(true);</script><br />
<!--End mc_embed_signup--><br />
</div>
]]></content:encoded>
			

		<wfw:commentRss>https://www.edwinmsarmiento.com/the-feature-was-there-all-along/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
				<post-id xmlns="com-wordpress:feed-additions:1">2557</post-id>	</item>
	</channel>
</rss>