SQL Server 2012データベースの特定のテーブルを表示できないログインのトラブルシューティングを行っています。その際、db_owner
ロールのメンバーシップで何が許可されているのかがよくわかりません。 db_datareader and db_datawriter
などの他の役割は理解できますが、db_owner
が何を許可するかについて混乱しています。
データベースレベルの役割のBOLに関する リファレンスを参照してください :
db_owner
Db_owner固定データベースロールのメンバーは、データベースのすべての構成およびメンテナンスアクティビティを実行でき、データベースを削除することもできます。
すべての権限を確認する最も簡単な方法は、sys.fn_my_permissions()
関数を使用することです。まず、あなたが_db_owner
_のメンバーであることを確認します。
_select
rol.name
from sys.database_principals mem
inner join sys.database_role_members drm
on drm.member_principal_id = mem.principal_id
inner join sys.database_principals rol
on drm.role_principal_id = rol.principal_id
where mem.principal_id = user_id();
_
次に、有効なデータベース権限をすべて一覧表示します。
_select *
from sys.fn_my_permissions(null, 'database');
_
それはあなたの目的のために十分に細かいはずです。注意すべき点として、sys.fn_my_permissions()
はeffective権限を返すため、これを集約と見なします。