用于管理 Azure SQL 数据库 DNS 别名的 PowerShell

适用于:Azure SQL 数据库Azure Synapse Analytics

本文提供 Azure PowerShell Az 模块或 Azure CLI 脚本,演示如何管理托管 Azure SQL 数据库的 Azure SQL 逻辑服务器 DNS 别名。

连接字符串中的 DNS 别名

若要连接逻辑 SQL 服务器,如 SQL Server Management Studio (SSMS) 客户端可以提供的 DNS 别名名称而不是真正的服务器名称。 在下面的示例服务器字符串中,别名 any-unique-alias-name 替换了四个节点服务器字符串中的第一个点分隔节点。

<yourServer>.database.chinacloudapi.cn

先决条件

如果想要运行演示这篇文章中提供的 PowerShell 脚本,适用以下先决条件:

示例

以下代码示例一开始就将文字值分配给多个变量。

若要运行此代码,请编辑占位符值,使之与系统中的实际值匹配。

使用的 cmdlet 如下:

若要进行安装或升级,请参阅安装 Azure PowerShell 模块

在 powershell_ise.exe 中使用 Get-Module -ListAvailable Az 来查找版本。

$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 -SubscriptionName $subscriptionName -Environment AzureChinaCloud;
$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;