SQL ServerのGUIを使用して、定義されたログインとユーザーを確認できることはわかっていますが、スクリプトを使用してこの確認を行う方法を考えています。
以下のクエリを実行しましたが、アクセス許可レベルを取得するためのマッピング方法がわからないPrincipal_idが表示されています。
SELECT * FROM Sys.login_token
それで、ログインとユーザーをリストできる組み込みのストアドプロシージャはありますかユーザーのアクセス許可レベルで?
ありがとうございました。
組み込みの方法があるかどうかはわかりませんが、このクエリでサーバープリンシパルを試してみてください。
;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
基本的にそれは何をするか許可と拒否された許可を取得し、役割のメンバーシップと結合します。サーバーログインのセキュリティについて簡単に説明します。それがあなたが探しているものかどうか教えてください。
これを試してください-これは、ユーザー、オブジェクト、およびそれらのオブジェクトに対するユーザーの権限をリストします。
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
これがお役に立てば幸いです。