自主地从一个sql服务器推送到另一个sql server

Push from one sql server to another autonomously

本文关键字:sql 服务器 server 另一个 一个      更新时间:2023-10-16

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

有很多方法可以实现这一点,因此可能是您喜欢的其他因素推动了这种方法。

如果SQL Server数据库位于同一服务器实例上:

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

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

  • SSIS包,用于识别更改并推送到DB2(奖金可以用于更改数据捕获)
  • 合并复制以同步更改
  • AlwaysOn可用性组同步整个dbs
  • Microsoft同步框架

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

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