我编辑了我的问题所以它可以更清楚, 在sys.server中有一行调用server_id, 我想知道是否有任何名称从此服务器ID获取数据库名称, 我正在使用复制和链接服务器,所以我想进行一个查询,获取所有服务器和获取数据库名称, 我不需要服务器上的所有数据库。
感谢您的帮助。
答案 0 :(得分:0)
考虑到您的编辑并删除我以前的答案,我没有确切的答案,但有一些可能有用的其他元数据:sys.linked_logins
,sp_linkedservers
。
也许您可以获取每个链接服务器名称并使用OPENQUERY
查询远程服务器上的sys.databases
目录?
-- this would be done in some kind of loop:
DECLARE @linkedSvrName sysname = (SELECT TOP 1 name FROM sys.servers WHERE server_id > 0);
DECLARE @sql nvarchar(4000) = 'SELECT * FROM OPENQUERY(' + @linkedSvrName + ', ''SELECT name FROM sys.databases'')';
EXEC sys.sp_executesql @sql
(我没有任何链接服务器条目可以进行测试,看看这实际上是否会按预期工作。)