web-dev-qa-db-ja.com

リンクサーバーログインのクエリ

リンクサーバーとそのマッピングされたログインのリストを作成したいと思います。誰か知ってる? sys.sysserversはサーバーを表示しますが、ログイン情報は表示されません。

3
Sam

そして簡単なトレースで答えがわかりました:

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')

したがって、これを複数のクエリ接続でロードし、データベースをあるデータベースから別のデータベースに移動するときに更新する必要があるリンクサーバーを確認できます。

1
Sam

このクエリは、すべてのリンクサーバーとそのログインのリストを提供します。

-- 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
4
Steven