Compartir a través de

复制到 Azure SQL 数据库

适用于:Azure SQL 数据库

可以从 SQL Server 和 Azure SQL 托管实例将 Azure SQL 数据库配置为单向事务或快照复制拓扑中的推送订阅服务器。

注意

本文介绍如何在 Azure SQL 数据库中使用事务复制。 它与活动异地复制无关,后者是一项 Azure SQL 数据库功能,可用于创建单个数据库的完全可读副本。

支持的配置

版本

若要将内容成功复制到 Azure SQL 数据库中的数据库,SQL Server 发布服务器和分发服务器须至少使用以下版本之一:

以下版本的 SQL Server 支持从 SQL Server 数据库发布到任何 Azure SQL 数据库:

注意

尝试使用不支持的版本来配置复制可能导致错误 MSSQL_REPL20084(过程无法连接到订阅服务器)和 MSSQL_REPL40532(无法打开登录名所请求的服务器 <name>。登录失败。)。

若要使用 Azure SQL 数据库的所有功能,必须使用最新版本的 SQL Server Management Studio (SSMS)SQL Server Data Tools

复制类型

有不同的复制类型

复制 Azure SQL 数据库 Azure SQL 托管实例
标准事务 是(仅用作订阅服务器)
快照 是(仅用作订阅服务器)
合并复制
对等
双向
可更新订阅

备注

  • 仅支持推送订阅 Azure SQL 数据库。
  • 若要配置复制,可以使用 SQL Server Management Studio,也可以在发布服务器上执行 Transact-SQL 语句。 不能使用 Azure 门户来配置复制。
  • 复制时,只能使用 SQL Server 身份验证登录来连接到 Azure SQL 数据库。
  • 复制的表必须有主键。
  • 必须已经有 Azure 订阅。
  • Azure SQL 数据库订阅服务器可以位于任何区域。
  • SQL Server 上的单一发布可以支持 Azure SQL 数据库和 SQL Server(本地的以及 Azure 虚拟机中的 SQL Server)订阅服务器。
  • 必须从 SQL Server 而不是 Azure SQL 数据库中执行复制管理、监视和故障排除。
  • 在适用于 SQL 数据库的 sp_addsubscription 中,仅 @subscriber_type = 0 受支持。
  • Azure SQL 数据库不支持双向、即时、可更新或对等复制。

复制体系结构

此图显示了具有 Azure SQL 数据库的复制体系结构,其中包含位于不同区域的多个订阅服务器群集,以及本地 Azure 虚拟机(其中包含连接到远程群集的发布服务器、日志读取可执行文件和分发服务器可执行文件)。

方案

典型复制方案

  1. 在 SQL Server 数据库上创建事务复制发布。
  2. 在 SQL Server 上使用新建订阅向导或 Transact-SQL 语句创建一个推送,以便推送到 Azure SQL 数据库的订阅。
  3. 对于 Azure SQL 数据库中的单一数据库和共用数据库,初始数据集是由快照代理创建并由分发代理分发和应用的快照。 使用 SQL 数据库托管实例发布服务器,还可以使用数据库备份来植入 Azure SQL 数据库订阅服务器。

数据迁移方案

  1. 使用事务复制将数据从 SQL Server 数据库复制到 Azure SQL 数据库。
  2. 重定向客户端或中间层应用程序以更新数据库副本。
  3. 停止更新 SQL Server 版本的表并删除发布。

限制

Azure SQL 数据库不支持具有以下选项的复制:

  • 复制文件组关联关系
  • 复制表分区方案
  • 复制索引分区方案
  • 复制用户定义的统计信息
  • 复制默认绑定
  • 复制规则绑定
  • 复制全文索引
  • 复制 XML XSD
  • 复制 XML 索引
  • 复制权限
  • 复制空间索引
  • 复制筛选的索引
  • 复制数据压缩属性
  • 复制稀疏列属性
  • 将文件流转换为 MAX 数据类型
  • 将 hierarchyid 转换为 MAX 数据类型
  • 将空间转换为 MAX 数据类型
  • 复制扩展的属性

限制待定

  • 复制排序规则
  • 在 SP 的序列化事务中执行

示例

创建发布和推送订阅。 有关详细信息,请参阅:

  • 创建发布
  • 创建推送订阅,方法是将服务器名称用作订阅服务器(例如 N'azuresqldbdns.database.chinacloudapi.cn' ),将 Azure SQL 数据库名称用作目标数据库(例如 AdventureWorks)。

另请参阅