您好我正在尝试如何实现这一目标。我有一个表T1,其中一列名为'Servers',其中包含一个链接服务器名称的完整列表。我想查询每个链接服务器上的一些表,并使用结果填充此表的其他列,例如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。 但我试图避免这样做,因为我在该列中有许多链接的服务器行。我们有什么办法可以通过使用基于集合的操作来实现这一目标吗?
感谢。
答案 0 :(得分:0)
由于您需要远程服务器上的所有数据库,我会考虑更改为2表方法。您的第一个表将是一个包含您要查询的所有链接服务器的表。然后,您需要遍历一个游标,该游标将制定动态SQL语句,以便跨链接服务器进行调用。
答案 1 :(得分:0)
我还建议将结果存储在单独的表中。然后你可以用这种方式接近它:
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)