Sql-Server

查詢連結伺服器登錄

  • April 2, 2018

我想生成連結伺服器及其映射登錄名的列表。有誰知道怎麼做?sys.sysservers 將顯示伺服器,但不顯示登錄資訊。

一個快速的跟踪告訴我答案:

sys.linked_logins

並查詢以查找更多資訊:

SELECT  sp.name ,
       s.name ,
       ll.remote_name
FROM    sys.linked_logins ll
       INNER JOIN sys.server_principals sp ON ll.local_principal_id = sp.principal_id
       INNER JOIN sys.servers s ON s.server_id = ll.server_id
WHERE   remote_name IN ('mylogin')

所以我在一個多查詢連接中載入它,當一個數據庫從一個數據庫移動到另一個數據庫時,我可以看到哪些連結伺服器需要更新。

此查詢將為您提供所有連結伺服器及其登錄名的列表:

-- linked servers and their logins
select s.name, p.principal_id, l.remote_name
from sys.servers s
   join sys.linked_logins l
       on s.server_id = l.server_id
   left join sys.server_principals p
       on l.local_principal_id = p.principal_id
where s.is_linked = 1
go

如果您需要更多資訊,請添加更多列。以下是基本 DMV:

-- list the linked servers
select * 
from sys.servers
where is_linked = 1
go

-- linked server logins
select * 
from sys.linked_logins
go

-- local logins
select * 
from sys.server_principals
go

引用自:https://dba.stackexchange.com/questions/29452