【发布时间】:2014-11-12 23:57:08
【问题描述】:
我每天需要将 6M 行的表发送到另一台服务器。 当我通过以下方式进行测试时,它似乎永远不会完成:
insert into serverA.dbName.dbo.table1
select * from serverB.dbName.dbo.table1
有没有像“每次做 10000 行”这样的事情
类似
insert into serverA.dbName.dbo.table1
select * from serverB.dbName.dbo.table1
**by numOfRowEachTime=10000**
否则我会写一个循环。
【问题讨论】:
-
我会写一个游标。或者这样做programmatically。
-
90% 的时间都使用光标是个坏主意。
-
如果您的 SQL Server 许可允许您设置集成服务,您可以使用它。目的地可以简单地配置成块。
-
每天复制超过 600 万行的最佳方法是使用 DTS 使用 BulkCopy 或编写一个使用 SQLBulkCopy 的小应用程序,批量大小为 100,000 以获得最佳性能。在您的情况下,它是一个长时间运行的过程,因为 SQL 服务器会记录每个插入操作。因此记录 6M 插入将花费大量时间。
标签: sql sql-server tsql bulkinsert data-transfer