0

在链接服务器之间传输数据时,迄今为止我在工作中使用了几种方法。

我想知道是否有一种公认的最快/最有效的方式来处理这样的任务?或者在不同的情况下应该使用一个而不是另一个?

我用过:

开放查询

INSERT INTO Table (col1, col2, col3)
SELECT col1, col2, col3
FROM OPENQUERY([server]......

开放行集

INSERT INTO Table (col1, col2, col3)
SELECT col1, col2, col3
FROM OPENROWSET('SQLOLEDB', 'Server=[server].......

临时表/SP

INSERT INTO #Temp
EXEC [server].[db].[dbo].[storedprocedure] @Param1, @Param2

经过一些“谷歌搜索”后,我没有得到明确的答案......或者还有其他选择吗?

4

1 回答 1

2

重要的是确保远程查询实际上是远程执行的。

发生在 temp table/sp 路由中。

对于其他 2 个选项,它可能会在任何排序/过滤等之前在本地提取所有数据。是否这样做取决于链接服务器的设置。但是他们也有其他缺点

  • 您无法使用 OPENROWSET 控制链接服务器设置,因为它是临时的
  • OPENQUERY 和 OPENROWSET 不允许参数:只有字符串常量

所以,选项3是最好的路线

有关更多信息,请参阅

于 2013-05-20T07:50:56.297 回答