如果我有多个SQL Server,并且我想显示链接服务器到我连接的实际SQL Server(myServer1),我可以执行sp_linkedservers
或在服务器对象/链接服务器下导航将显示与其连接的服务器列表。
现在假设我只能访问myServer1,因此无法执行sp_linkedservers
,有没有办法显示哪些SQL服务器有myServer1作为链接服务器?
答案 0 :(得分:0)
您可以使用这些DMV但仍需要适当的权限:
use master
go
SELECT *
FROM sys.servers s
LEFT JOIN sys.linked_logins l ON s.server_id = l.server_id
LEFT JOIN sys.server_principals p ON p.principal_id = l.local_principal_id
答案 1 :(得分:0)
你提出的问题:在sql server实例上运行'something'(让我们称之为A)检索其他服务器/实例的列表,其中A作为链接服务器对象的目标
回答:你不能。
链接服务器不是持久连接,因此“目标”服务器没有关于哪个服务器具有引用它的潜在连接的信息;只有在激活连接时(例如,运行查询),目标服务器才会注意到远程服务器的存在。
此外,当激活连接时,目标服务器无法知道另一端是否存在链接服务器,odbc源或任何其他软件对象。
您可以擦除日志以查找远程端点,但是您可以自己尝试猜测远程端是否有链接服务器或其他任何内容。
你最好的选择是一个脚本(powershell,也许?),它检索sql服务器列表会产生一个在每个服务器上配置的链接服务器的列表。