gpt4 book ai didi

Azure - 使用 Transact-SQL 和 SSMS 将现有 SQL 数据库复制到另一台服务器

转载 作者:行者123 更新时间:2023-12-03 05:02:37 37 4
gpt4 key购买 nike

我在 Azure 上有两个订阅,为了便于论证,我们将它们称为订阅 1 和订阅 2。

我在订阅 1 上有一个大小为 30 GB 的 SQL 数据库,我想将其移至订阅 2。

一种方法是备份数据库(使用 Azure 门户上的导出选项),​​使用存储资源管理器等将 bacpac 文件移动到订阅 2,然后将 bacpac 文件导入到订阅 2 上的目标服务器。但当数据库规模过大时,备份和恢复过程会花费大量时间。

因此,我想出了使用 Transact-SQL 方法,如 this article 中给出的。

使用 SSMS,我在目标服务器(服务器 2)的主数据库中使用以下命令将数据库从源服务器(订阅 1 中的服务器 1)复制到目标服务器(订阅 2 中的服务器 2)

CREATE DATABASE Database2 AS COPY OF server1.Database1;

两台服务器都具有相同的登录凭据,因此此过程可以正常工作,如上面的文章所示,并且我已经针对非常小的数据库对其进行了测试(用于测试目的)

我的问题是,当我使用 Transact SQL 方法复制上述大小为 30 GB 的数据库时,它会使用我的互联网带宽还是 Azure 数据中心的带宽?就像我们使用门户中的复制选项时一样

最佳答案

您引用的 T-SQL 命令不会通过您的计算机。它从服务器 1 到服务器 2。从概念上讲,它相当于从 Azure 门户执行 T-SQL 命令。

再深入一层,SQL Azure 中的门户和 T-SQL DDL 命令都通过该区域中的控制平面 REST API 进行路由。您可以在此处查看相关文档:

https://learn.microsoft.com/en-us/rest/api/sql/databases/createorupdate

然后,控制平面将启动后台操作,将当前数据库的连续副本创建到第二个服务器上的新副本中。完成后,它将中断连续复制操作,您将有第二个数据库可供您使用。

甚至更深一层 - 执行所有这些种子设定的逻辑或多或少与 SQL Azure 内部创建数据库新副本所需的逻辑相同。在高级/大型预留大小中,您将在每个数据库本地拥有 N 个副本,以实现高可用性和性能,并且如果一个副本节点出现故障(硬件故障等),系统将在内部需要创建一个新的连续副本剩余的副本来为您的数据库重建正确数量的备份副本。

最后一个细节 - 与传统的 SQL Server 命令不同,这是异步的。因此,一旦您提交命令,其余的事情就会在后台发生。因此,正如 @Nick.McDermaid 提到的,您可以在命令启动后关闭本地计算机并稍后检查它,而不必担心事务被中止和回滚。唯一的额外问题是您需要检查命令的完成情况,这可能需要一些时间,具体取决于数据库的大小、您使用的预留大小(控制 IOPS)等。

关于Azure - 使用 Transact-SQL 和 SSMS 将现有 SQL 数据库复制到另一台服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53680693/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com