TSQL将一个数据库复制到另一个

时间:2012-02-23 18:28:03

标签: sql-server asp.net-mvc tsql

我有两个相同的数据库,可以称之为A& B,我想要做的是有两个复制选项:

1-复制整个数据库并使用TSQL覆盖从A到B的所有内容

2-使用TSQL我想循环遍历A中的每个表行,并检查最后修改日期字段是否大于B表行副本中的最后修改日期并覆盖整行。

如果事情不明确,请现在就告诉我,非常感谢任何帮助,并提前致谢。

1 个答案:

答案 0 :(得分:0)

使用Visual Studio 2010 Premium或Ultimate,您可以进行架构比较,并在您需要的服务器上创建新数据库。获取数据完全是另一回事,您可以使用SSIS或链接服务器查询执行此操作,特别是考虑到您只是将数据从一侧泵送到另一侧。

请参阅此帖子了解架构比较工具: How can I find the differences between two databases?

我们最近完成的事情是使用CHECKSUM和表格切换来引入新数据,保留旧数据并比较两组。

你基本上会为每个交换机设置三个表,一个用于生产,一个用于_staging,另一个用于_old表,它是精确的模式匹配。因为当你执行切换时需要三个表(这是瞬时的,你需要切换到一个空表)。您可以将数据泵入登台表并执行开关,将表定义的指针从生产更改为_old,从_staging更改为生产。如果您在每一行计算校验和,您可以公司并查看新的或不同的。

我们对它的使用效果很好,但实现这一目标需要相当多的准备工作,这可能会因您的环境而受到限制。

http://msdn.microsoft.com/en-us/library/ms190273.aspx

http://technet.microsoft.com/en-us/library/ms191160.aspx

http://msdn.microsoft.com/en-us/library/ms189788.aspx

以下是我们在GoDaddy.com的sql网络编辑器上运行的示例查询:

CREATE TABLE TestTable (Val1 INT NOT NULL)
CREATE TABLE TestTable2 (Val1 INT NOT NULL)

INSERT INTO TestTable (Val1) VALUES (4) 

SELECT * FROM TestTable 

ALTER TABLE TestTable SWITCH TO TestTable2 

SELECT * FROM TestTable2