链接服务器远程执行

时间:2014-02-28 10:43:32

标签: sql-server sql-server-2000

我正在本地工作站上通过SQL Server 2008 Express在链接的SQL Server 2000上做一些工作。 SQL2000坐在一个非常令人印象深刻的机架上,有很多可用的资源,所以我想尽可能地利用它。

我正在处理远程表上以TEXT格式存储的XML字符串。我的原始查询在其中包含一个子查询,如下所示:

SELECT Id, FolderId, CAST(REPLACE(CAST(Content AS VARCHAR(MAX)) AS XML), 'encoding="utf-16"', '') AS ContentXML
FROM [LinkedServer].[UPLSalesP].[dbo].[RSSDocument]

但是我只能假设大多数子查询正在我的工作站而不是机架上执行,因为SQL2000中没有VARCHAR(MAX)XML数据类型。在250万行上执行上述查询10小时后,它遭遇内存故障并中止。

我的推定是否正确执行?如果我将其更改为以下内容:

SELECT Id, FolderId, REPLACE(CAST(Content AS VARCHAR(8000)), 'encoding="utf-16"', '') AS ContentXML
FROM [LinkedServer].[UPLSalesP].[dbo].[RSSDocument]

子查询是否会先远程执行?是否可以通过这种方式获得任何效率,然后在我的本地2008 Express实例中转换为XML

1 个答案:

答案 0 :(得分:0)

请尝试使用OPENQUERY。这将在链接服务器上执行select命令,并将结果传回。 它看起来像这样:

SELECT Id, FolderId, ContentXML
FROM OPENQUERY( LinkedServerName, 'SELECT Id, FolderId, CAST(REPLACE(CAST(Content AS VARCHAR(MAX)) AS XML), 'encoding="utf-16"', '')
AS ContentXML
FROM [dbo].[RSSDocument]')

(如果我错了,那就是我的第一个答案!)