繁体   English   中英

T-SQL使用链接服务器查询结果填充本地表

[英]T-SQL use linked server query result to populate a local table

嗨,我正在尝试获得一些精妙的想法,以实现这一目标。 我有一个表T1,其中的列名为“服务器”,其中包含链接服务器名称的整个列表。 我想查询每个链接服务器上的一些表,并使用结果填充该表的其他列,例如,名为DB_Nmaes的列。

理想的结果表如下所示

T1

Servers  DB_Names    Datafile_Size, …. 
S1 D1 2M S1 D2 3M S1 D3 5M S2 D1 3M S2 D2 6M . . .

我可以想到的一种方法是遍历整个表T1,并在每个循环中构造一个动态SQL,以查询相应的链接服务器并将其插入其他字段DB_Names和Datafile_size。 但是我试图避免这样做,因为在该列中有很多链接服务器行。 有什么方法可以通过使用基于集合的操作来完成此操作?

谢谢。

由于您希望所有数据库都位于远程服务器上,因此我将考虑更改为2表方法。 您的第一个表将是一个包含您要查询的所有链接服务器的表。 然后,您需要遍历游标,该游标将制定动态SQL语句,以便跨链接的服务器进行调用。

我也建议将结果存储在单独的表中。 然后,您可以通过以下方式进行处理:

CREATE TABLE ServerDbs (LinkedServer VARCHAR(100), DbName VARCHAR(100))

DECLARE @q VARCHAR(MAX)
SET @q = 
    (SELECT 'INSERT INTO ServerDbs SELECT ''' + T.Server + ''', name FROM ' + T.Server + '.master.sys.databases'
    FROM T
    FOR XML PATH(''))

EXEC (@q)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM