<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>SQL Server AlwaysOn Team Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/sqlalwayson/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/sqlalwayson/feed.xml</link>
    <description>The official SQL Server AlwaysOn team blog.</description>
    <lastBuildDate>Mon, 25 Mar 2019 04:37:39 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>AlwaysOn Availability Groups: Comparing On-Premises Deployments and Azure VM Deployments</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlalwayson/alwayson-availability-groups-comparing-on-premises-deployments-and-azure-vm-deployments</link>
      <pubDate>Wed, 05 Feb 2014 12:38:50 GMT</pubDate>
      <dc:creator><![CDATA[Sanjay Mishra]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.cloudplatform.qa.msdn.wdslab.com/sqlalwayson/2014/02/05/alwayson-availability-groups-comparing-on-premises-deployments-and-azure-vm-deployments/</guid>
      <description><![CDATA[Cross posting from SQLCAT...]]></description>
      <content:encoded><![CDATA[<p>Cross posting from SQLCAT blog:</p>
<p><a href="https://blogs.msdn.com/b/sqlcat/archive/2014/02/04/alwayson-availability-groups-comparing-on-premises-deployments-and-azure-vm-deployments.aspx">https://blogs.msdn.com/b/sqlcat/archive/2014/02/04/alwayson-availability-groups-comparing-on-premises-deployments-and-azure-vm-deployments.aspx</a></p>]]></content:encoded>
    </item>
    <item>
      <title>AlwaysOn Availability Groups, Listener, Named Instances, Port Numbers, etc.</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlalwayson/alwayson-availability-groups-listener-named-instances-port-numbers-etc</link>
      <pubDate>Wed, 05 Feb 2014 12:37:54 GMT</pubDate>
      <dc:creator><![CDATA[Sanjay Mishra]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.cloudplatform.qa.msdn.wdslab.com/sqlalwayson/2014/02/05/alwayson-availability-groups-listener-named-instances-port-numbers-etc/</guid>
      <description><![CDATA[Cross posting from SQLCAT...]]></description>
      <content:encoded><![CDATA[<p>Cross posting from SQLCAT blog:</p>
<p><a href="https://blogs.msdn.com/b/sqlcat/archive/2014/02/03/alwayson-availability-groups-listener-named-instances-port-numbers-etc.aspx">https://blogs.msdn.com/b/sqlcat/archive/2014/02/03/alwayson-availability-groups-listener-named-instances-port-numbers-etc.aspx</a></p>]]></content:encoded>
    </item>
    <item>
      <title>AlwaysOn Availability Group in Windows Azure VM: Client Connectivity Scenarios</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlalwayson/alwayson-availability-group-in-windows-azure-vm-client-connectivity-scenarios</link>
      <pubDate>Wed, 05 Feb 2014 12:36:46 GMT</pubDate>
      <dc:creator><![CDATA[Sanjay Mishra]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.cloudplatform.qa.msdn.wdslab.com/sqlalwayson/2014/02/05/alwayson-availability-group-in-windows-azure-vm-client-connectivity-scenarios/</guid>
      <description><![CDATA[Cross posting from SQLCAT...]]></description>
      <content:encoded><![CDATA[<p>Cross posting from SQLCAT blog:</p>
<p><a href="https://blogs.msdn.com/b/sqlcat/archive/2014/02/03/alwayson-availability-group-in-windows-azure-vm-client-connectivity-scenarios.aspx">https://blogs.msdn.com/b/sqlcat/archive/2014/02/03/alwayson-availability-group-in-windows-azure-vm-client-connectivity-scenarios.aspx</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Published: Troubleshooting Guide for Availability Group Listener in Windows Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlalwayson/published-troubleshooting-guide-for-availability-group-listener-in-windows-azure</link>
      <pubDate>Mon, 06 Jan 2014 10:46:18 GMT</pubDate>
      <dc:creator><![CDATA[Cephas Lin]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.cloudplatform.qa.msdn.wdslab.com/sqlalwayson/2014/01/06/published-troubleshooting-guide-for-availability-group-listener-in-windows-azure/</guid>
      <description><![CDATA[Before the holidays, this article was quietly published:...]]></description>
      <content:encoded><![CDATA[<p>Before the holidays, this article was quietly published: <a href="https://msdn.microsoft.com/en-us/library/windowsazure/dn495646.aspx">https://msdn.microsoft.com/en-us/library/windowsazure/dn495646.aspx</a></p>
<p>This is a troubleshooting guide for all those going through the joys and pains of configuring the availability group listener in the cloud. There are already guidance on how to configure the listener in Windows Azure or hybrid IT, but no known content that helps you when you run into issues with your listener - until now.</p>
<p>Please take a moment to look at it. And as always, feedback welcome!</p>]]></content:encoded>
    </item>
    <item>
      <title>More Windows Azure E2E Scripts!</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlalwayson/more-windows-azure-e2e-scripts</link>
      <pubDate>Thu, 05 Dec 2013 07:26:00 GMT</pubDate>
      <dc:creator><![CDATA[Cephas Lin]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.cloudplatform.qa.msdn.wdslab.com/sqlalwayson/2013/12/05/more-windows-azure-e2e-scripts/</guid>
      <description><![CDATA[In case you're not already aware, I've written additional scripts for Windows Azure deployment of...]]></description>
      <content:encoded><![CDATA[<p>In case you're not already aware, I've written additional scripts for Windows Azure deployment of AlwaysOn Availability Groups for you to play with. Windows Azure provides an ever-expanding set of PowerShell cmdlets, which make automated deployments and administration of SQL Server on IaaS a reality. These scripts are there as proofs of concept to you as well as a starting point for you in building an end-to-end scenario that fits your needs (with the usual disclaimers "for testing purposes only" and such).</p>
<p><a href="https://gallery.technet.microsoft.com/scriptcenter/Deploy-a-SQL-Server-794bc810">Deploy a SQL Server AlwaysOn Availability Group in Windows Azure</a></p>
<p><a href="https://gallery.technet.microsoft.com/scriptcenter/Deploy-a-SQL-Server-5608b684">Deploy a SQL Server AlwaysOn Availability Group in Hybrid IT</a></p>
<p>These script deploy end-to-end, including creating the VMs, configuring DC, SQL Server accounts, WSFC cluster, creating the availability group and even a fully functional listener for client connectivity. The cloud-only deployment script (first on the list) is truly end-to-end, which only requires an empty working subscription and minimal requirements for running the script. The hybrid deployment script have more complex requirements since it requires an existing on-premise domain,&nbsp;a site-to-site VPN, and some on-premise SQL Server machines in the deployment.</p>
<p>Hope you find it useful, and your feedback/comments are always helpful. <span style="font-family: Wingdings;">J</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Availability Group Listener in Hybrid IT: End-to-End PowerShell Script Published</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlalwayson/availability-group-listener-in-hybrid-it-end-to-end-powershell-script-published</link>
      <pubDate>Fri, 22 Nov 2013 15:42:54 GMT</pubDate>
      <dc:creator><![CDATA[Cephas Lin]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.cloudplatform.qa.msdn.wdslab.com/sqlalwayson/2013/11/22/availability-group-listener-in-hybrid-it-end-to-end-powershell-script-published/</guid>
      <description><![CDATA[Hello,
Please check out the script at...]]></description>
      <content:encoded><![CDATA[<p>Hello,</p>
<p>Please check out the script at <a href="https://gallery.technet.microsoft.com/scriptcenter/Create-Availability-Group-3fc1ca5e">https://gallery.technet.microsoft.com/scriptcenter/Create-Availability-Group-3fc1ca5e</a>.</p>
<p>This script creates a listener for an availability group with replicas both on-premise and in Windows Azure.</p>
<p>For information on how to configure the hybrid availability group listener&nbsp;without the script, see <a title="Tutorial: Listener Configuration for AlwaysOn Availability Groups in Hybrid IT" href="https://msdn.microsoft.com/en-us/library/dn425027.aspx">https://msdn.microsoft.com/en-us/library/dn425027.aspx</a>.</p>
<p>As always, feedback is welcome.</p>]]></content:encoded>
    </item>
    <item>
      <title>Availability Group Listener in Windows Azure Now Supported! (And Scripts for Cloud-Only Configuration)</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlalwayson/availability-group-listener-in-windows-azure-now-supported-and-scripts-for-cloud-only-configuration</link>
      <pubDate>Tue, 06 Aug 2013 11:18:00 GMT</pubDate>
      <dc:creator><![CDATA[Cephas Lin]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.cloudplatform.qa.msdn.wdslab.com/sqlalwayson/2013/08/06/availability-group-listener-in-windows-azure-now-supported-and-scripts-for-cloud-only-configuration/</guid>
      <description><![CDATA[If you haven't noticed, AlwaysOn Availability Groups in Windows Azure now supports availability...]]></description>
      <content:encoded><![CDATA[<p><span style="color: #000000;">If you haven't noticed, AlwaysOn Availability Groups in Windows Azure now supports availability group (AG) listeners. Configuring the AG listener in Windows Azure is a multi-step process that includes:</span></p>
<ol>
<li><span style="color: #000000;">Creating a load-balanced endpoint for the Windows Azure VMs that host AG replicas. </span></li>
<li><span style="color: #1f497d;"><span style="color: #000000;">Ensuring that hotfix </span><a href="https://support.microsoft.com/kb/2854082">KB2854082</a><span style="color: #000000;"> is installed on all cluster nodes (including any node that does not host an AG replica). </span></span></li>
<li><span style="color: #000000;">Opening the probe port in the cluster nodes that host AG replicas. </span></li>
<li><span style="color: #000000;">Manually creating a client access point in the cluster and configuring the IP address parameters to use the cloud service IP address, the probe port, etc. </span></li>
<li><span style="color: #000000;">Setting the listener port in SQL Server. </span></li>
</ol>
<p><span style="color: #1f497d;"><span style="color: #000000;">If you are looking for an easier way to configure the listener in Windows Azure, I've published a script at the </span><a href="https://gallery.technet.microsoft.com/scriptcenter/Create-Availability-Group-fff94cd5">Script Center</a><span style="color: #000000;">. This script currently has limited applications, but hopefully I can expand the scenarios as time goes on &ndash; and if you shout in my ear. If your scenario fits all the requirements, then I hope this script can help simplify the process of listener creation. <em>If you don't fit all the requirements, you may still be able to "scriptify" most of the steps. So just read on.</em> </span></span></p>
<p><span style="color: #000000;">Now back to the requirements for this script, the biggest limitations are as follows: </span></p>
<ul>
<li><span style="color: #000000;"><strong>All AG nodes are running in Windows Azure and in the same subnet</strong> &ndash; Simply put, if the same listener requires multiple IPs, you can't use this script. This means the script excludes to all multi-subnet scenarios such as hybrid IT. </span></li>
<li>
<div>
<p><span style="color: #000000;"><strong>All cluster VMs were created with PowerShell Remoting enabled</strong> &ndash; This part gets a little hairy, so get ready. If after GA (4/16) you created your cluster VMs using PowerShell, then they are all PowerShell Remoting enabled. If however, you created your VMs using the portal, you had a choice until very recently to enable PowerShell Remoting by means of a small check box. If you didn't check that box, I won't say you lose, but you definitely can't use this script, at least not without manually enabling PowerShell Remoting on your VMs and tweaking the script. My personal opinion is: not worth the trouble. </span></p>
<p><span style="color: #000000;">Now, the Azure team make a small tweak on 7/16 that enables PowerShell Remoting for all portal-created VMs without giving you the option. So if you created your VM <em>after</em> 7/16, then you win! </span></p>
</div>
</li>
</ul>
<p><span style="color: #1f497d;"><span style="color: #000000;">So enough for the </span><span style="color: orangered;"><span style="font-family: Lucida Console; font-size: 9pt;">$winners</span><span style="color: #1f497d;"><span style="color: #000000;">, now for the </span><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgray;">-not</span>(<span style="color: orangered;">$winners</span>)</span><span style="color: #000000;"> &ndash; those who can't use the script because of the above limitations. I'd like to provide some PowerShell snippets that you can run and that hopefully can make things simpler as well. Mainly, there are three scripts: one to run on your local client from which you normally administer your Windows Azure deployment, one to run on all your cluster VMs, and one to run on the primary replica VM. Understand that these scripts are much more "quick and dirty" than foolproof, so don't expect the validation and error checking that you find in the downloadable script. Also, you should have created a working AG in Windows Azure before using these steps. So now, without further ado, here are steps:</span></span></span></span></p>
<ol>
<li>
<div><span style="color: #000000;">Windows Azure PowerShell June 2013 or later installed on the local client. Download at <a href="https://go.microsoft.com/?linkid=9811175&amp;clcid=0x409">https://go.microsoft.com/?linkid=9811175&amp;clcid=0x409</a>. </span></div>
</li>
<li>
<div><span style="color: #000000;">On your local client, copy and paste the following script into a Windows Azure PowerShell session to configure LB endpoints and DSR each AG node (not necessarily each WSFC node) </span></div>
<p style="background: white; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Define variables</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$AGNodes</span> <span style="color: darkgray;">=</span> <span style="color: darkred;">"VM1"<span style="color: darkgray;">,<span style="color: darkred;">"VM2"<span style="color: darkgray;">,<span style="color: darkred;">"VM3"</span> <span style="color: darkgreen;"># all AG nodes should be included</span> </span></span></span></span></span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$ServiceName</span> <span style="color: darkgray;">=</span> <span style="color: darkred;">"MyCloudService"</span> <span style="color: darkgreen;"># the name of the cloud service that contains the AG nodes</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$EndpointName</span> <span style="color: darkgray;">=</span> <span style="color: darkred;">"MyEndpoint"</span> <span style="color: darkgreen;"># name of the endpoint</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$EndpointPort</span> <span style="color: darkgray;">=</span> <span style="color: darkred;">"10000"</span> <span style="color: darkgreen;"># public and private port to use for the endpoint</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;">&nbsp;</p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Configure a load balanced endpoint for each node in $AGNodes, with direct server return enabled</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkblue;">ForEach</span> (<span style="color: orangered;">$node</span> <span style="color: darkblue;">in</span> <span style="color: orangered;">$AGNodes</span>) </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;">{ </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;">&nbsp;&nbsp; <span style="color: blue;">Get-AzureVM</span> <span style="color: navy;">-ServiceName</span> <span style="color: orangered;">$ServiceName</span> <span style="color: navy;">-Name</span> <span style="color: orangered;">$node</span> <span style="color: darkgray;">|</span> <span style="color: blue;">Add-AzureEndpoint</span> <span style="color: navy;">-Name</span> <span style="color: orangered;">$EndpointName</span> <span style="color: navy;">-Protocol</span> <span style="color: darkred;">"TCP"</span> <span style="color: navy;">-PublicPort</span> <span style="color: orangered;">$EndpointPort</span> <span style="color: navy;">-LocalPort</span> <span style="color: orangered;">$EndpointPort</span> <span style="color: navy;">-LBSetName</span> <span style="color: darkred;">"<span style="color: orangered;">$EndpointName<span style="color: darkred;">-LB"</span> <span style="color: navy;">-ProbePort</span> <span style="color: purple;">59999</span> <span style="color: navy;">-ProbeProtocol</span> <span style="color: darkred;">"TCP"</span> <span style="color: navy;">-DirectServerReturn</span> $true</span> <span style="color: darkgray;">|</span> <span style="color: blue;">Update-AzureVM</span> </span></span></p>
<p style="background: white; margin-top: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;">} </span></p>
</li>
<li><span style="color: #000000;">Connect to RDP session for each WSFC node and download hotfix KB2854082 to a local directory. </span></li>
<li>
<div><span style="color: #000000;">In the RDP session for each WSFC node, copy and paste the following script into an elevated PowerShell session to install hotfix 2854082 and open the probe port in the firewall if the node is an availability group node. <strong>Be careful to run the script to completion on each node before moving onto the next node.</strong> </span></div>
<p style="background: white; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Define variables</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$ag</span> <span style="color: darkgray;">=</span> <span style="color: darkred;">"AG1"</span> <span style="color: darkgreen;">#Availability group name</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$hotfixpath</span> <span style="color: darkgray;">=</span> <span style="color: darkred;">"&lt;localpath&gt;"</span> <span style="color: darkgreen;">#Hotfix's .msu file path</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$listenerPort</span> <span style="color: darkgray;">=</span> <span style="color: darkred;">"10000"</span> <span style="color: darkgreen;"># Listener port. Same as the endpoint port.</span></span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;">&nbsp;</p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Import-Module</span> <span style="color: blueviolet;">FailoverClusters</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Stop the cluster service</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Stop-ClusterNode</span> <span style="color: navy;">-Name</span> <span style="color: orangered;">$env:COMPUTERNAME</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Run update</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgray;">&amp;</span> <span style="color: orangered;">$hotfixpath</span> <span style="color: blueviolet;">/quiet</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Wait for update to finish</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkblue;">while</span> ((<span style="color: blue;">Get-Process</span> <span style="color: darkgray;">|</span> <span style="color: blue;">where</span> {<span style="color: orangered;">$_<span style="color: darkgray;">.</span>ProcessName <span style="color: darkgray;">-eq</span> <span style="color: darkred;">"wusa"</span>}) <span style="color: darkgray;">-ne</span> $null</span>) </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;">{ </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;">&nbsp;&nbsp; <span style="color: blue;">Write-Host</span> <span style="color: darkred;">"Waiting for update to complete..."</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;">&nbsp;&nbsp; <span style="color: blue;">Start-Sleep</span> <span style="color: navy;">-Seconds</span> <span style="color: purple;">10</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;">} </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Start the cluster service</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Start-ClusterNode</span> <span style="color: navy;">-Name</span> <span style="color: orangered;">$env:COMPUTERNAME</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Check if VM is an AG node and open the port port if true</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkblue;">If</span> (<span style="color: blue;">Get-ClusterOwnerNode</span> <span style="color: navy;">-Group</span> <span style="color: orangered;">$ag</span> <span style="color: darkgray;">|</span> <span style="color: blue;">where</span> {<span style="color: orangered;">$_<span style="color: darkgray;">.</span>OwnerNodes <span style="color: darkgray;">-contains</span> $env:COMPUTERNAME</span>}) </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;">{ </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;">&nbsp;&nbsp; <span style="color: blue;">netsh</span> <span style="color: blueviolet;">advfirewall</span> <span style="color: blueviolet;">firewall</span> <span style="color: blueviolet;">add</span> <span style="color: blueviolet;">rule</span> <span style="color: blueviolet;">name='Load Balance Probe (TCP-In)'</span> <span style="color: blueviolet;">localport=59999</span> <span style="color: blueviolet;">dir=in</span> <span style="color: blueviolet;">action=allow</span> <span style="color: blueviolet;">protocol=TCP</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;">&nbsp;&nbsp; <span style="color: blue;">netsh</span> <span style="color: blueviolet;">advfirewall</span> <span style="color: blueviolet;">firewall</span> <span style="color: blueviolet;">add</span> <span style="color: blueviolet;">rule</span> <span style="color: blueviolet;">name='Availability Group Listener&nbsp;(TCP-In)'</span> <span style="color: blueviolet;">localport=<span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$listenerPort</span></span></span> <span style="color: blueviolet;">dir=in</span> <span style="color: blueviolet;">action=allow</span> <span style="color: blueviolet;">protocol=TCP</span> </span></p>
<p style="background: white; margin-top: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;">}&nbsp;</span>&nbsp;</p>
</li>
<li>
<div><span style="color: #000000;">In the RDP session for the primary replica VM, copy and paste the following script into an elevated PowerShell session </span></div>
<p style="background: white; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Define variables</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$ag</span> <span style="color: darkgray;">=</span> <span style="color: darkred;">"AG1"</span> <span style="color: darkgreen;"># The availability group name</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$serviceName</span> <span style="color: darkgray;">=</span> <span style="color: darkred;">"MyCloudService"</span> <span style="color: darkgreen;"># The cloud service name</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$networkName</span> <span style="color: darkgray;">=</span> <span style="color: darkred;">"Cluster Network 1"</span> <span style="color: darkgreen;"># The cluster network name, usually "Cluster Network 1" if the nodes are in the same subnet</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$listenerPort</span> <span style="color: darkgray;">=</span> <span style="color: darkred;">"10000"</span> <span style="color: darkgreen;"># Listener port. Same as the endpoint port.</span></span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;">&nbsp;</p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$aglistener</span> <span style="color: darkgray;">=</span> <span style="color: orangered;">$ag</span> <span style="color: darkgray;">+</span> <span style="color: darkred;">"Listener"</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$agendpoint</span> <span style="color: darkgray;">=</span> (<span style="color: blue;">Resolve-DnsName</span> <span style="color: navy;">-Name</span> <span style="color: darkred;">"<span style="color: orangered;">$serviceName<span style="color: darkred;">.cloudapp.net"</span>)<span style="color: darkgray;">.</span>IPAddress </span> </span></span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Import-Module</span> <span style="color: blueviolet;">FailoverClusters</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Add IP address resource for the listener to AG resource group. The probe port is set so the AG owner node will respond to probes from Windows Azure.</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Add-ClusterResource</span> <span style="color: darkred;">"IP Address <span style="color: orangered;">$agendpoint<span style="color: darkred;">"</span> <span style="color: navy;">-ResourceType</span> <span style="color: darkred;">"IP Address"</span> <span style="color: navy;">-Group</span> $ag</span> <span style="color: darkgray;">|</span> <span style="color: blue;">Set-ClusterParameter</span> <span style="color: navy;">-Multiple</span> @{"Address"<span style="color: darkgray;">=<span style="color: darkred;">"<span style="color: orangered;">$agendpoint<span style="color: darkred;">"</span>;<span style="color: darkred;">"ProbePort"<span style="color: darkgray;">=<span style="color: darkred;">"59999"</span>;SubnetMask=<span style="color: darkred;">"255.255.255.255"</span>;<span style="color: darkred;">"Network"<span style="color: darkgray;">=<span style="color: darkred;">"<span style="color: orangered;">$networkName<span style="color: darkred;">"</span>;<span style="color: darkred;">"OverrideAddressMatch"<span style="color: darkgray;">=<span style="color: purple;">1</span>;<span style="color: darkred;">"EnableDhcp"<span style="color: darkgray;">=<span style="color: purple;">0</span>}</span> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Add Network Name resource for the listener to AG resource group</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Add-ClusterResource</span> <span style="color: navy;">-Name</span> <span style="color: orangered;">$aglistener</span> <span style="color: navy;">-ResourceType</span> <span style="color: darkred;">"Network Name"</span> <span style="color: navy;">-Group</span> <span style="color: orangered;">$ag</span> <span style="color: darkgray;">|</span> <span style="color: blue;">Set-ClusterParameter</span> <span style="color: navy;">-Multiple</span> @{<span style="color: darkred;">"Name"<span style="color: darkgray;">=<span style="color: orangered;">$aglistener</span>;<span style="color: darkred;">"DnsName"<span style="color: darkgray;">=<span style="color: orangered;">$aglistener</span>}</span> </span></span></span></span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Set dependency for the Network Name resource on the IP address resource </span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Get-ClusterResource</span> <span style="color: navy;">-Name</span> <span style="color: orangered;">$aglistener</span> <span style="color: darkgray;">|</span> <span style="color: blue;">Set-ClusterResourceDependency</span> <span style="color: darkred;">"[IP Address <span style="color: orangered;">$agendpoint<span style="color: darkred;">]"</span> </span></span></span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Start the listener resource</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Start-ClusterResource</span> <span style="color: navy;">-Name</span> <span style="color: orangered;">$aglistener</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Set dependency for the AG resource group on the listener's network name</span> </span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Get-ClusterResource</span> <span style="color: navy;">-Name</span> <span style="color: orangered;">$ag</span> <span style="color: darkgray;">|</span> <span style="color: blue;">Set-ClusterResourceDependency</span> <span style="color: darkred;">"[<span style="color: orangered;">$aglistener<span style="color: darkred;">]"</span> </span></span></span></p>
<p style="background: white; margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;"># Change port number on the listener to 1433</span> </span></p>
<p style="background: white; margin-top: 0px;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Set-SqlAvailabilityGroupListener</span> <span style="color: navy;">-Path</span> <span style="color: blueviolet;">SQLSERVER:\SQL\<span style="color: orangered;">$env:COMPUTERNAME<span style="color: blueviolet;">\DEFAULT\AvailabilityGroups\<span style="color: orangered;">$ag<span style="color: blueviolet;">\AvailabilityGroupListeners\<span style="color: orangered;">$aglistener</span> <span style="color: navy;">-Port</span> <span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: orangered;">$listenerPort</span></span> </span></span></span></span></span></span></p>
</li>
<li>
<div><span style="color: #000000;">Test connection to listener from a domain-joined VM that is not in the same cloud service (DSR not supported from within the same cloud service). Use a longer login timeout since network messages are traversing the VM's public endpoint. You can use sqlcmd or SSMS. </span></div>
<p style="background: white;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">sqlcmd</span> <span style="color: navy;">&ndash;S</span> "&lt;ListenerName&gt;,&lt;EndpointPort&gt;" <span style="color: navy;">-d</span> <span style="color: blueviolet;">"&lt;DatabaseName&gt;"</span> <span style="color: navy;">-Q</span> <span style="color: darkred;">"select @@servername, db_name()"</span> <span style="color: navy;">-l</span> <span style="color: purple;">15</span> </span></p>
</li>
<li><span style="color: #000000;">Fail over the AG and test the listener connection again. The query above should succeed and return a different server name. </span></li>
</ol>
<p><span style="color: #1f497d;"><span style="color: #000000;">The main HADR topic for SQL Server in Windows Azure: </span><a href="https://msdn.microsoft.com/en-us/library/windowsazure/jj870962.aspx">High Availability and Disaster Recovery for SQL Server in Windows Azure Virtual Machines</a></span>, will be updated in the near future and will include a GUI tutorial on how to configure this.</p>]]></content:encoded>
    </item>
    <item>
      <title>AlwaysOn in SQL Server 2014 CTP1</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlalwayson/alwayson-in-sql-server-2014-ctp1</link>
      <pubDate>Thu, 04 Jul 2013 16:34:54 GMT</pubDate>
      <dc:creator><![CDATA[Sanjay Mishra]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.cloudplatform.qa.msdn.wdslab.com/sqlalwayson/2013/07/04/alwayson-in-sql-server-2014-ctp1/</guid>
      <description><![CDATA[Failover Cluster Instances as well as Availability Groups have some great features coming up in SQL...]]></description>
      <content:encoded><![CDATA[<p>Failover Cluster Instances as well as Availability Groups have some great features coming up in SQL Server 2014.</p>
<p>Take a look at Luis' post on what you can try out with publicly available CTP1: <a href="https://blogs.technet.com/b/dataplatforminsider/archive/2013/06/27/alwayson-in-sql-server-2014-ctp1.aspx">https://blogs.technet.com/b/dataplatforminsider/archive/2013/06/27/alwayson-in-sql-server-2014-ctp1.aspx</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>AlwaysOn Availability Groups Troubleshooting and Monitoring Guide published!</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlalwayson/alwayson-availability-groups-troubleshooting-and-monitoring-guide-published</link>
      <pubDate>Thu, 06 Jun 2013 20:55:11 GMT</pubDate>
      <dc:creator><![CDATA[Cephas Lin]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.cloudplatform.qa.msdn.wdslab.com/sqlalwayson/2013/06/06/alwayson-availability-groups-troubleshooting-and-monitoring-guide-published/</guid>
      <description><![CDATA[AlwaysOn Availability Groups Troubleshooting and Monitoring Guide&nbsp;provides information on...]]></description>
      <content:encoded><![CDATA[<p><a id="dn135326_SQL.110_en-us" title="AlwaysOn Availability Groups Troubleshooting and Monitoring Guide" href="https://msdn.microsoft.com/en-us/library/dn135326.aspx" data-tochassubtree="true">AlwaysOn Availability Groups Troubleshooting and Monitoring Guide</a>&nbsp;provides information on troubleshooting the common AlwaysOn Availability Groups issues and monitoring the availability group health. We will try to keep updating this guide as new troubleshooting scenarios are documented so that you can conveniently find all the information in one place.</p>
<p>Please send us feedback on it!</p>]]></content:encoded>
    </item>
    <item>
      <title>Upgrade and Update Guide for AlwaysOn Availability Groups published!</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlalwayson/upgrade-and-update-guide-for-alwayson-availability-groups-published</link>
      <pubDate>Thu, 30 May 2013 09:06:29 GMT</pubDate>
      <dc:creator><![CDATA[Cephas Lin]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.cloudplatform.qa.msdn.wdslab.com/sqlalwayson/2013/05/30/upgrade-and-update-guide-for-alwayson-availability-groups-published/</guid>
      <description><![CDATA[The upgrade/update guide for availability group servers is now live on MSDN.
Upgrade and Update of...]]></description>
      <content:encoded><![CDATA[<p>The upgrade/update guide for availability group servers is now live on MSDN.</p>
<p><a href="https://msdn.microsoft.com/en-us/library/dn178483.aspx">Upgrade and Update of Availability Group Servers with Minimal Downtime and Data Loss</a></p>
<p>It shows how to upgrade/update to any major, minor, service pack, or update release with minimal downtime in multiple deployment scenarios.</p>]]></content:encoded>
    </item>
  </channel>
</rss>