この質問に適切なタイトルを選択したかどうかはわかりません。私が本当に望んでいるのは、個々のWindows ADユーザーが与えられた場合、このサーバーの特定のデータベースにアクセスできるWindows ADグループ(ログイン)のリストを見つけたいです
次のクエリを実行すると
select
name,
principal_id,
type,
type_desc,
default_schema_name,
create_date,
modify_date,
owning_principal_id,
sid,
is_fixed_role
from sys.database_principals
私のサーバーで
Microsoft SQL Server 2008 R2(SP1)-10.50.2500.0(X64)2011年6月17日00:54:03著作権(c)Windows NT 6.1(ビルド7601:Service Pack 1)上のMicrosoft Corporation Standard Edition(64ビット)
次の結果が得られます(一部のリスト):
特定のログインが持つすべての許可を知る必要があります。このログインは、ADグループを介してサーバー/データベースにアクセスできます。
1)上記のリストから、私のログインはどのADグループに属しますか?
以下でこれを行っていますが、このユーザーが属するADグループ(上記の図に従ってこのサーバーにアクセスできる)のリストを見つけたいと思います。
まず、問題のユーザーとして実行します
EXECUTE AS LOGIN='mycompany\HThorne'
DECLARE @User VARCHAR(20)
SELECT @USER = SUBSTRING(SUSER_SNAME(),
CHARINDEX('\', SUSER_SNAME()) + 1, LEN(SUSER_SNAME()))
私は正しい資格情報を持っていることを確認します
SELECT @USER
, SUSER_SNAME()
,SYSTEM_USER
, USER_NAME()
, CURRENT_USER
, ORIGINAL_LOGIN()
, USER
,SESSION_USER
特定のデータベースに移動し、fn_my_permissionsを使用します-問題のユーザーとして実行します
use WebDataImportStage
go
SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
GO
REVERT
そして、それは私に以下の結果を与えています: