PowerShell and Azure CLI for DNS Alias for standalone dedicated SQL pools (formerly SQL DW)

This article provides Azure PowerShell Az module or Azure CLI scripts to demonstrate how you can manage a DNS alias for the Azure SQL logical server hosting your standalone dedicated SQL pool.

Only standalone dedicated SQL pools (formerly DW) support the Azure SQL logical server DNS alias. For dedicated SQL pools in Azure Synapse workspaces, the DNS alias isn't currently supported.

DNS alias in connection string

To connect a logical SQL server, a client such as SQL Server Management Studio (SSMS) can provide the DNS alias name instead of the true server name. In the following example server string, the alias any-unique-alias-name replaces the first dot-delimited node in the four node server string:

<yourServer>.database.chinacloudapi.cn

Prerequisites

To run the demo PowerShell script given in this article, ensure the following prerequisites:

Example

The following code example starts by assigning literal values to several variables.

To run the code, edit the placeholder values to match real values in your system.

Use the following cmdlets:

To install or upgrade, see Install Azure PowerShell module.

Use Get-Module -ListAvailable Az in powershell_ise.exe to find the version.

$subscriptionName = '<subscriptionName>';
$sqlServerDnsAliasName = '<aliasName>';
$resourceGroupName = '<resourceGroupName>';  
$sqlServerName = '<sqlServerName>';
$resourceGroupName2 = '<resourceGroupNameTwo>'; # can be same or different than $resourceGroupName
$sqlServerName2 = '<sqlServerNameTwo>'; # must be different from $sqlServerName.

# login to Azure
Connect-AzAccount -Environment AzureChinaCloud -SubscriptionName $subscriptionName;
$subscriptionId = Get-AzSubscription -SubscriptionName $subscriptionName;

Write-Host 'Assign an alias to server 1...';
New-AzSqlServerDnsAlias -ResourceGroupName $resourceGroupName -ServerName $sqlServerName `
    -Name $sqlServerDnsAliasName;

Write-Host 'Get the aliases assigned to server 1...';
Get-AzSqlServerDnsAlias -ResourceGroupName $resourceGroupName -ServerName $sqlServerName;

Write-Host 'Move the alias from server 1 to server 2...';
Set-AzSqlServerDnsAlias -ResourceGroupName $resourceGroupName2 -TargetServerName $sqlServerName2 `
    -Name $sqlServerDnsAliasName `
    -SourceServerResourceGroup $resourceGroupName -SourceServerName $sqlServerName `
    -SourceServerSubscriptionId $subscriptionId.Id;

Write-Host 'Get the aliases assigned to server 2...';
Get-AzSqlServerDnsAlias -ResourceGroupName $resourceGroupName2 -ServerName $sqlServerName2;

Write-Host 'Remove the alias from server 2...';
Remove-AzSqlServerDnsAlias -ResourceGroupName $resourceGroupName2 -ServerName $sqlServerName2 `
    -Name $sqlServerDnsAliasName;