0

我们在 Azure SQL(平台即服务)中有一个异地复制数据库。这是主/从类型排列,因此异地复制数据库是只读的。

我们希望定期从该 Azure SQL 数据库下载数据到具有相同架构的本地 SQL Server 数据库,而不会对性能产生太大影响(Azure 数据库是应用程序使用的主数据库)。

我们最初查看 Azure SQL 数据同步,希望从异地复制数据中读取数据并将其拉到本地,但它需要创建触发器 + 跟踪表。我对此并不太满意,因为不可能对只读从数据库运行它,因此必须在事务主数据库上设置它(影响应用程序性能),这反过来又会重新- 在异地复制数据库上创建这些额外的数据同步工件。看起来很混乱,数据臃肿(我们有大量的表和数据,Azure PaaS 数据库的大小受到限制),而且我们还使用 Redgate 数据库生命周期管理,这可能会破坏这些架构对象和跟踪表每次我们执行发布时,因为他们

还有哪些其他可行的选择(除了远离 PaaS 并在本地和云上创建集群 IaaS VM 环境,安装 SQL Server,打补丁等)。请记住,我们在人员方面资源紧张,这就是为什么 PaaS 最初是我们数据库的理想场所。

我应该提一下,我们希望本地数据库与 Azure 数据库“相对”同步,但本地数据最多可以是一小时前的数据。

在我的脑海中,一些选项可能是 SSIS 包?或者以某种方式定期下载数据库的 Bacpac 并每 30 分钟在本地恢复一次(但它是一个非常大的数据库)。

请注意,在这个阶段它只需要是单向的(从 Azure 到本地)。

4

1 回答 1

1

您可以尝试使用 Azure 数据工厂,因为当 SQL Server 用作“接收器”时,它允许您在复制期间将数据附加到目标表或调用具有自定义逻辑的存储过程。你可以在这里了解更多。

Azure 数据工厂允许你在初始完整数据加载后使用具有最后更新时间戳或递​​增键的水印列增量加载数据 (delta)。增量加载解决方案在旧水印和新水印之间加载更改的数据。您可以在本文中详细了解如何使用 Azure 数据工厂执行操作。

希望这可以帮助。

于 2018-02-07T13:14:00.700 回答