SQL:自动将记录从一个数据库复制到另一个数据库

时间:2016-03-31 09:31:21

标签: sql database sql-server-2012

我正在尝试找出一种将新记录从一个数据库自动复制到另一个数据库的理想方法。数据库有不同的结构!我通过编写VBS脚本来实现它,该脚本将数据从一个复制到另一个,并从另一个将参数传递给脚本的应用程序触发脚本。但是我遇到了超过100个触发点的问题。即100wscript进程试图访问数据库,他们无法完成任务。

我想在SQL中找到一个更简单的解决方案,我读到了关于设置触发器,存储过程并从SQL代理运行它们,复制等等。要求是我必须定期将记录复制到另一个数据库,或者当有新记录到另一个数据库。

哪种方法最适合我?

3 个答案:

答案 0 :(得分:0)

你问题中的定期单词表明你应该去找工作。您可以使用Sql Server代理在SQL Server中调度作业并分配句点。该作业将按指定的频率运行您的脚本。

答案 1 :(得分:0)

您可以使用CDC执行此活动。使用CDC创建SSIS包并通过SQL Server代理作业定期运行该包。 CDC将存储该表的所有更改,并在运行包时对目标表执行所有这些更改。请点击以下链接。 http://sqlmag.com/sql-server-integration-services/combining-cdc-and-ssis-incremental-data-loads

答案 2 :(得分:0)

要点:更改数据捕获 这是一个不错的选择。因为它使用截断日志来创建类似于命令查询隔离模式(CQRS)的内容。

Alok Gupta:在SQL代理中运行的SQL作业 鉴于您拥有类似修改日期的信息,因此这也是一个不错的选择,因此您可以过滤修改后的数据。您可以创建一个存储过程,并使其在SQL代理中正常运行。

第三个选项可能是触发器(更改将在同一笔交易中发生)。 此选项对于审核和日志记录很有用。但是您绝对应该避免在触发器中编写业务逻辑,因为触发器或多或少是隐藏的,并且在不直接调用它们的情况下发生(实际上类似于CDC)。实际上,大约半年前,我已经创建了一个触发器,该触发器捕获了数据并将其以xml格式插入到其他位置,因为原始表中的列可能会随时间而变化(多个项目使用相同的数据库)。

-编辑- 顺便说一句,您的问题或多或少表明缺少清晰的设计模式,并且所使用的技术不是主要问题。您可以尝试阅读ETL层的构建方式,也可以尝试实现“关注点分离”。注意;很难确定是否是这种情况,但是考虑到您是如何提出问题的,一个不清楚的设计是我可能会想到的问题。