2

我需要每天从一个 SQL Server (A) 到另一个 (B) 批量插入大约 1m 行。

服务器 A 托管记录,并有权访问作为链接服务器的服务器 B。两者都是 SQL Server 2008 Express 版本。由于内部政治/治理原因使生活变得困难,我无法将服务器 A 设置为服务器 B 中的链接服务器,从而无法使用 SELECT INTO 选项。

所以我一直在努力寻找一种在尽可能好的时间内推送数据的方法——一个 INSERT INTO 语句大约需要 20 分钟才能执行。我要推入的表没有任何索引,以避免从那里进一步放慢速度。

BULK INSERT 和 BCP 在这种情况下似乎不适用。我在某处读到的一篇文章提到使用 OPENROWSET BULK 进行 INSERT INTO,但我还没有找到方法。其他地方提到提交一次交易,但我也没有太多运气研究。

有谁知道我怎样才能以更好的方式做到这一点?

4

1 回答 1

0

目前尚不完全清楚您有哪些限制或为什么您已经提到的选项不合适,但这里有一些事情可以尝试:

  • OPENROWSET提供(或多或少)与链接服务器相同的功能,但它在查询中包含所有连接信息,因此这可能是您提到的治理问题的解决方法
  • 使用 bcp.exe 将数据导出为平面文件(最好是原生格式),然后将其复制到服务器 B 并使用 bcp.exe 或BULK INSERT
  • 编写一个脚本或程序,从服务器 A 查询数据并将其插入服务器 B(可能使用SqlBulkCopy API

当然,这个网站上已经有几十个关于将数据复制到另一个数据库和/或服务器的问题。

于 2013-05-13T16:40:24.370 回答