从一台 sql 服务器自动推送到另一台服务器

Push from one sql server to another autonomously

我有一个应用程序,每次更新 DB#1 table 中的某个条目时,它要求我从 DB#1 中提取某些信息并将其推送到 DB#2。轮询速率不需要非常快,但它可能不应低于 1 秒。 我正计划使用 C++ 连接器库编写一个小型服务,但我担心会给 DB#1 带来太多负载。有没有更有效的方法来做到这一点?例如 SQL 脚本中的内置功能?

您可以在 DB1 中创建触发器,并在 DB1 和 DB2 之间创建数据库链接。因此,您可以在 DB1 中本地调用触发器并将数据直接传输到 DB2。

实现此目的的方法有很多,因此可能是您更喜欢的其他因素推动了该方法。

如果 SQL 服务器数据库在同一服务器实例上:

  • 在推送到 DB2 表的 DB1 表上触发
  • 存储过程(在 DB1 或 DB2 中)使用 MERGE 识别更改并将它们同步到 DB2,然后使用 SQL 作业按计划调用该过程
  • 在数据库和所需表上启用更改跟踪,然后使用存储过程 + SQL 作业发送更改而不对源表进行任何查询

如果在不同的实例或服务器上(但如果在同一实例上也可以工作):

  • 用于识别更改并推送到 DB2 的 SSIS 包(奖金可以与更改数据捕获一起使用)
  • 合并复制以同步更改
  • AlwaysOn 可用性组同步整个数据库
  • 微软同步框架

我对您的偏好或舒适度一无所知,我可能会从合并复制开始 - 设置起来可能有点棘手和乏味,但性能非常好。