既存のSQL Serverログインとユーザーのリスト


14

SQL ServerのGUIを使用して、定義されているログインとユーザーを確認できることは知っていますが、スクリプトを使用してこの確認をどのように行うことができるのか疑問に思っています。

以下のクエリを実行しましたが、Permission_levelを取得するためのマッピング方法がわからないPrincipal_idが表示されます。

SELECT * FROM Sys.login_token 

それでは、ログインとユーザーを許可レベルでリストできる組み込みストアドプロシージャはありますか?

ありがとうございました。


「許可レベル」を定義します。オブジェクト権限、データベースロールメンバーシップ、サーバーロールメンバーシップ?
-mrdenny

疑わしい場合は、Management Studioに対してProfilerを有効にして、その機能を確認してください。
ジョンセイゲル

回答:


14

組み込みの方法があるかどうかはわかりませんが、このクエリにサーバープリンシパルを試してみてください。

;with ServerPermsAndRoles as
(
    select
        spr.name as principal_name,
        spr.type_desc as principal_type,
        spm.permission_name collate SQL_Latin1_General_CP1_CI_AS as security_entity,
        'permission' as security_type,
        spm.state_desc
    from sys.server_principals spr
    inner join sys.server_permissions spm
    on spr.principal_id = spm.grantee_principal_id
    where spr.type in ('s', 'u')

    union all

    select
        sp.name as principal_name,
        sp.type_desc as principal_type,
        spr.name as security_entity,
        'role membership' as security_type,
        null as state_desc
    from sys.server_principals sp
    inner join sys.server_role_members srm
    on sp.principal_id = srm.member_principal_id
    inner join sys.server_principals spr
    on srm.role_principal_id = spr.principal_id
    where sp.type in ('s', 'u')
)
select *
from ServerPermsAndRoles
order by principal_name

基本的には、アクセス許可を付与および拒否し、ロールメンバシップと結合します。サーバーログインのセキュリティについて簡単に説明します。それがあなたが探しているものかどうか私に知らせてください。


これはとても役に立ちました!「リストされた各ログインへのアクセス許可を付与/取り消すコマンドを表示」に文字列連結を追加しました。CAST([srvperm].[state_desc] AS VARCHAR(MAX)) + ' ' + CAST(srvperm.[permission_name] AS VARCHAR(MAX)) + ' TO [' + CAST(srvprin.name AS VARCHAR(MAX)) + '];' as GrantQueryこれは、サーバーを移行する場合にそれらのアクセス許可を複製するのに役立ちます:)
NateJ

8

これを試してください-これにより、ユーザー、オブジェクト、およびそれらのオブジェクトに対するユーザーのアクセス許可が一覧表示されます。

SELECT p.name, o.name, d.*
FROM sys.database_principals AS p
JOIN sys.database_permissions AS d ON d.grantee_principal_id = p.principal_id
JOIN sys.objects AS o ON o.object_id = d.major_id

sys.fn_my_permissions関数もチェックアウトする必要があります。

http://msdn.microsoft.com/en-us/library/ms188367.aspx

また、次のリンクも役立ちます。

権限: http : //msdn.microsoft.com/en-us/library/ms191291.aspx

SYS.DATABASE_PERMISSIONS: http : //msdn.microsoft.com/en-us/library/ms188367.aspx

これがあなたのお役に立てば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.