独自のログインを持っていないsqlServerドメインユーザーのログイン名、データベースのユーザー名、またはロールを見つける方法は?
-
28-09-2019 - |
質問
「MyDomain Domainユーザー」と呼ばれるログインおよびデータベースユーザーを作成しました。ログインしたドメインユーザーが持っている役割を見つける必要がありますが、現在のユーザーにドメインのユーザー名を返すようにするためのすべての呼び出しが必要です。 「mydomain username」データベースユーザー名ではありません。 「mydomain domainユーザー」。
たとえば、このクエリは「mydomain username」を返します
select original_login(),suser_name(), suser_sname(), system_user, session_user, current_user, user_name()
そして、このクエリは0を返します
select USER_ID()
ユーザー名がデータベース_ROLE_MEMBERSをクエリして照会したいのですが、それを返す関数はありますか、それとも現在のユーザーの役割を取得できる他の方法ですか?
解決
ドメインユーザーのログインが広告グループにマッピングされていることを理解していますか?
ユーザーはいくつかの広告グループにあることができ、それぞれが少し乱雑なデータベースに何らかの形でマッピングできることに留意する必要があります。また、それはあなたが複数の結果を持つ何かが必要なことを意味します:)
これを試して:
select * from sys.server_principals where type_desc = 'WINDOWS_GROUP' and is_member(name) = 1
特定のユーザーと結ばれるすべてのWindowsグループログインを適切に取得する必要があると思います。その後、データベースユーザーに参加できます。
Select u.name from YourDB.sys.syslogins l
inner join YourDB.sys.sysusers u
on l.sid = u.sid
where l.loginname = ANY (select * from sys.server_principals where type_desc = 'WINDOWS_GROUP' and is_member(name) = 1)
単一の値ではなく、セット全体を処理する必要がある場合があることを心に留めておく必要があります。
所属していません StackOverflow