SQL Server - 在表之间复制数据

时间:2010-09-20 14:04:18

标签: sql-server

我需要在同一个SQL Server 2000数据库中的两个表之间复制大量(~200,000)记录。

我无法更改原始表格以包含我需要的列,因此副本是唯一的解决方案。

我用insert select语句创建了一个脚本。它可以工作,但有时触发存储过程的.net表单会捕获超时过期错误的异常。

是否有更有效的方法来复制这些记录?

有关如何检查数据库中超时发生位置的任何提示?

4 个答案:

答案 0 :(得分:0)

  

INSERT(id,name)SELECT id,name FROM   your_table WHERE your_condition

我建议你把你的表单放在一个不同的线程中,这样它就不会冻结,你也可以增加超时,它就在你的连接字符串中。

如果无法避免多次插入,可以尝试将它们拆分为较小的堆栈,例如一次只发送50个查询。

答案 1 :(得分:0)

您是否想要创建一个在表之间复制数据的应用程序,或者这只是一次性解决方案?如果您只需要执行一次,则应创建一个脚本以在数据库服务器本身上执行,以复制在表之间传输所需的数据。

答案 2 :(得分:0)

您使用SqlCommand执行存储过程吗?

如果是,请设置CommandTimeout

 myCmd.CommandTimeout = 360; //value is in seconds.

答案 3 :(得分:0)

1>比较两个数据库与 redgate数据比较,因为其他表为空,比较后将生成的脚本将全部插入。仅为该表选择插入。 2>使用redgate中的多脚本只需将这些脚本添加到多脚本并在该数据库表上执行它将继续执行直到完成,然后你可以比较你是否正确拥有所有数据。 3 GT;如果您不想使用多脚本创建命令行应用程序来插入数据。