此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
在 Azure SQL Database 中复制数据库

在 Azure SQL Database 中复制数据库

更新时间: 2015年2月

数据库复制操作可将 Microsoft Azure SQL Database 复制到新数据库。可以在相同或不同的逻辑服务器上创建副本。复制过程完成后,新数据库将完全正常工作,并独立于源数据库。完成复制时,新数据库的事务处理方式将与源数据库保持一致。数据库副本的服务层、最大大小和性能级别都与源数据库相同。

因为新数据库具有与数据库相同的服务层和性能级别,每个副本将会加入到数据库总数中,并按与源数据库相同的费率向你计费。有关详细信息,请参阅 SQL Database 定价详细信息

本主题内容

下列方案可能需要创建源数据库的副本。这些方案使用的方法取决于源数据库和目标数据库在同一服务器上还是不同服务器上、位于同一区域还是不同区域、属于同一订阅还是不同订阅。本主题后面的复制数据库的其他方法部分对这些方法进行了详细说明。

  • 应用程序开发和测试:你可将生产数据库复制到可用于开发和测试的新数据库。

  • 应用程序升级:在执行主要应用程序更新之前,你可将应用程序数据库复制到使用不同名称的备份数据库。如果升级过程失败或虽然完成但存在错误,你只需将备份数据库重命名为应用程序数据库名称,即可恢复为升级之前的数据库版本。

  • 数据库迁移:迁移应用程序时,可能还必须迁移关联的数据库。

note备注
由复制功能创建的数据库将计入针对每个 Azure SQL Database 服务器的数据库的 Azure SQL Database 数目限制中。有关成本和计费影响的信息,请参阅 Azure SQL Database 帐户和计费

用于“返回首页”链接的箭头图标 [Top]

使用数据库复制功能时,数据库异步复制,因此在整个复制过程中都不需要与 Azure SQL Database 服务器的连接。你可以通过登录到目标服务器的 master 数据库并执行含 CREATE DATABASE 子句的 Transact-SQL AS COPY OF 语句,复制数据库。然后,你可以通过使用目标服务器上的 sys.dm_database_copies 和 sys.databases 视图,监视该复制过程。

你可以使用不同数据库名称将数据库复制到同一 Azure SQL Database 服务器,也可以将数据库复制到不同的 Azure SQL Database 服务器。本部分提供两种选项的示例。

在你复制数据库以便在同一 Azure SQL Database 服务器上生成新数据库时,可以对这两个数据库使用相同的登录名。你用于复制该数据库的安全主体将在创建新数据库时成为该数据库上的数据库所有者 (DBO)。

下图显示相同服务器复制:

将数据库复制到同一 SQL Database 服务器

在该图中,Database1A 将复制到同一 Azure SQL Database 服务器 Database1B 上的新数据库 Server1 中。复制了数据库的登录名将成为 Database1B 的 DBO。所有数据库用户、其权限及其来自 Database1A 的安全标识符 (SID) 都复制到 Database1B 中。因为用户 SID 在这两个数据库上是相同的,所以,来自 Server1 的登录名在这两个数据库上保持相同权限。

在完成该复制后,Database1B 将成为能够完全行使功能的独立数据库。Database1B 的登录名、用户和权限可独立于 Database1A 进行管理。

还可以在位于同一区域或不同区域的两个不同的 Azure SQL Database 服务器之间复制数据库。因为是在不同 Azure SQL Database 服务器上创建新数据库,它与不同 master 数据库关联。新数据库中的所有用户都保持他们在源数据库中已有的权限。你用于复制该数据库的安全主体将在新数据库创建时成为该数据库上的数据库所有者 (DBO),并且将分配有新的安全标识符 (SID)。

下图显示跨服务器复制:

将数据库复制到其他 SQL Database 服务器

在该图中,Database1A 将从 Server1 复制到不同 Azure SQL Database 服务器 Database2A 上的新数据库 Server2 中。复制了数据库的登录名将成为 Database2A 的 DBO。来自 Database1A 的所有数据库用户及其权限(但不是其 SID)将复制到 Database2A 中。来自 Server1 的登录名不能用于新数据库,因为这些登录名与某一其他 Azure SQL Database 服务器相关联,并且 Database2A 用户 SID 不同于 Database1A 用户 SID。

Important重要提示
一个 Azure SQL Database 区域可以包括多个物理群集。当前无法使用 Transact-SQL 在两个不同的群集之间复制数据库。有关限制的详细信息,请参阅Restrictions

在完成跨服务器复制过程后,Database2A 的登录名、用户和权限可独立于 Database1A 进行管理。使用 DBO 登录名和 Transact-SQL ALTER USER 语句将新数据库中的用户映射到新 Azure SQL Database 服务器上的登录名。例如:ALTER USER userName WITH LOGIN='loginName'。有关详细信息,请参阅 ALTER USER

用于“返回首页”链接的箭头图标 [Top]

使用数据库复制功能(DB 复制)是创建数据库副本的一种便捷方式。如果这种方法无法满足你的需求,请考虑使用以下替代选项之一:

使用 时间点还原,你可以创建以往版本数据库的副本。例如,你需要创建某次升级之前的数据库版本的副本。时间点还原 仅在基本、标准和高级服务层中提供。有关 时间点还原的详细信息,请参阅 Azure SQL Database 备份和还原

活动的地域复制 仅在使用高级服务层的数据库上提供。它让你能够控制复制完成的时间。当你需要将复制完成时间与工作流中的其他操作密切协调时,应该使用该功能。有关详细信息,请参阅Azure SQL Database 的活动地域复制

如果你的特定方案中没有其他可用选项,应该考虑导入/导出服务。使用数据库复制功能,在导入到最终位置之前创建数据库副本,可以确保导出的事务一致性。有关导入/导出的信息,请参阅操作方法:在 Azure SQL Database 中使用导入和导出服务

Important重要提示
无论你选择哪一种复制方法,数据库审核设置都不会复制到新数据库。如果你的新数据库需要数据库审核功能,必须在该数据库处于活动和联机状态后启用该功能。另外,如果你在不同区域中创建新数据库,则应当使用与新数据库位于同一区域中的存储帐户。有关 Azure SQL Database 审核的详细信息,请参阅数据库审核

另请参阅

显示:
© 2015 Microsoft