Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:自动将记录从一个数据库复制到另一个数据库_Sql_Database_Sql Server 2012 - Fatal编程技术网

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

SQL:自动将记录从一个数据库复制到另一个数据库,sql,database,sql-server-2012,Sql,Database,Sql Server 2012,我试图找到一种理想的方法,自动将新记录从一个数据库复制到另一个数据库。数据库有不同的结构!我通过编写VBS脚本实现了这一点,该脚本将数据从一个复制到另一个,并从另一个应用程序触发脚本,该应用程序将参数传递给脚本。但我在有100多个触发点的时候遇到了问题。i、 e.100wscript进程试图访问数据库,但无法完成任务 我想在SQL内部找到一个更简单的解决方案,我阅读了有关设置触发器、存储过程以及从SQL代理、复制等运行它们的内容。要求是我必须定期将记录复制到另一个数据库,或者在另一个数据库中有新

我试图找到一种理想的方法,自动将新记录从一个数据库复制到另一个数据库。数据库有不同的结构!我通过编写VBS脚本实现了这一点,该脚本将数据从一个复制到另一个,并从另一个应用程序触发脚本,该应用程序将参数传递给脚本。但我在有100多个触发点的时候遇到了问题。i、 e.100wscript进程试图访问数据库,但无法完成任务

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


哪种方法最适合我

你问题中的“定期”一词暗示你应该找工作。您可以使用SQL Server代理在SQL Server中计划作业,并指定一个时间段。作业将按照指定的频率运行脚本。

您可以使用来执行此活动。使用CDC创建SSIS包,并通过SQL Server代理作业定期运行该包。CDC将存储该表的所有更改,并在运行包时对目标表执行所有这些更改。请点击下面的链接。
PrabirS:更改数据捕获 这是一个很好的选择。因为它使用截断日志创建类似于命令查询隔离模式(CQRS)的内容

Alok Gupta:在SQL代理中运行的SQL作业 这也是一个很好的选择,因为您有修改过的日期之类的内容,因此可以过滤修改过的数据。您可以创建一个存储过程,并让它在SQL代理中定期运行

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

-编辑-
顺便说一句,您的问题或多或少表明,缺乏明确的设计模式,所使用的技术不是主要问题。您可以尝试阅读ETL层是如何构建的,或者尝试实现“关注点分离”。注;很难说情况是否如此,但考虑到您是如何表述问题的,不清楚的设计是我脑海中可能出现的问题。

我是否也可以使用存储过程而不是脚本?因为我有8个不同的脚本,如果定期运行,我的理想时间是每分钟。是的,您可以将脚本放入存储过程中,作业将在您定义的时间间隔内运行存储过程。