适用于:Azure SQL 数据库
Azure SQL 数据库有一个域名系统 (DNS) 服务器。 PowerShell 和 REST API 接受为逻辑 SQL 服务器名称创建和管理 DNS 别名的调用。
使用 DNS 别名 代替服务器名称。 客户端程序可在其连接字符串中使用别名。 DNS 别名提供一个转换层,用于将客户端程序重定向到不同的服务器。 使用此层无需查找和编辑所有客户端及其连接字符串,因此降低了复杂性。
DNS 别名的常见用途包括:
- 为服务器创建易于记住的名称。
- 在初始开发期间,别名可以指向测试服务器。 应用程序上线后,你可以修改别名以引用生产服务器。 从测试转换到生产环境不需要对连接到服务器的客户端进行任何修改。
- 假设将应用程序中的唯一数据库移动到另一台服务器。 可以修改别名,而无需修改多个客户端的配置。
- 在区域性中断期间,您可以使用 异地还原,以将数据库恢复到不同的服务器和区域。 可以修改现有别名以指向新服务器,以便现有客户端应用程序可以重新连接到它。
有关Azure Synapse Analytics中独立专用 SQL 池的 DNS 别名的信息,请参阅独立专用 SQL 池(前 SQL DW)的 DNS 别名。
Internet 的域名系统 (DNS)
Internet 依赖于 DNS。 DNS 会将友好名称转换为服务器的名称。
使用一个 DNS 别名的方案
假设你需要将系统切换到新的服务器。 过去,你需要在每个客户端程序中查找并更新每个连接字符串。 但现在,如果连接字符串使用 DNS 别名,则只需更新别名属性。
Azure SQL 数据库的 DNS 别名功能有助于实现以下方案:
测试到生产
开始开发客户端程序时,请使用其连接字符串中的 DNS 别名。 别名的属性指向服务器的测试版本。
稍后,当新系统在生产环境中运行时,将别名的属性更新为指向生产服务器。 无需更改客户端连接字符串。
跨区域支持
灾难恢复可将服务器转移到不同的地理区域。 对于使用 DNS 别名的系统,可以避免查找和更新所有客户端的所有连接字符串。 而是,请更新别名,使其指向当前托管你的 Azure SQL 数据库 的新服务器。
DNS 别名的属性
以下属性适用于服务器的每个 DNS 别名:
- 唯一的名称:像服务器名称一样,创建的每个别名在所有服务器上保持唯一。
-
服务器是必需的: 除非它完全引用一台服务器,并且服务器必须已存在,否则无法创建 DNS 别名。 更新的别名必须始终恰好引用一个现有服务器。
- 删除某个服务器时,Azure 系统也会删除指向该服务器的所有 DNS 别名。
- 未绑定到任何区域: DNS 别名未绑定到区域。 可以更新任何 DNS 别名以引用驻留在任何地理区域中的服务器。
- 权限: 若要管理 DNS 别名,必须具有 服务器参与者 权限或更高版本。 有关详细信息,请参阅 Azure 门户中 Azure 基于角色的访问控制入门。
管理 DNS 别名
使用 REST API 或 PowerShell cmdlet 以编程方式管理 DNS 别名。
使用 REST API 管理 Azure SQL 数据库 DNS 别名
有关 REST API 的详细信息,请参阅 Azure SQL 数据库 REST API
使用 PowerShell 管理Azure SQL 数据库 DNS 别名
可以使用 PowerShell cmdlet 来调用 REST API。 有关 PowerShell 示例,请参阅: PowerShell for DNS Alias to Azure SQL 数据库。
代码示例中使用的 cmdlet 如下:
- New-AzSqlServerDnsAlias:在 Azure SQL 数据库服务系统中创建新的 DNS 别名。 该别名指代服务器 1。
- Get-AzSqlServerDnsAlias:获取并列出分配给服务器 1 的所有 DNS 别名。
- Set-AzSqlServerDnsAlias:将别名根据配置引用的服务器名称从“服务器 1”修改为“服务器 2”。
- Remove-AzSqlServerDnsAlias:通过别名名称从服务器 2 删除 DNS 别名。
注意
本文使用 Azure Az PowerShell 模块,这是与 Azure 交互时推荐使用的 PowerShell 模块。 若要开始使用 Az PowerShell 模块,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
重要
PowerShell Azure 资源管理器(AzureRM)模块已于 2024 年 2 月 29 日弃用。 所有未来的开发都应使用 Az.Sql 模块。 建议用户从 AzureRM 迁移到 Az PowerShell 模块,以确保持续支持和更新。 不再维护或支持 AzureRM 模块。 Az PowerShell 模块和 AzureRM 模块中命令的参数基本相同。 有关兼容性的详细信息,请参阅 介绍新的 Az PowerShell 模块。
限制
目前,DNS 别名具有以下限制:
- 延迟最长为 2 分钟:最长需要 2 分钟才能更新或删除 DNS 别名。
- 无论延迟如何短暂,别名都会立即停止将客户端连接指向旧服务器。
- DNS 查找:目前,检查给定 DNS 别名引用哪台服务器的唯一权威方法是执行 DNS 查找。
- DNS 别名受命名限制的约束。