ユーザーがWindowsグループを介してSQLServerにログインできるシナリオがあります。ユーザー自体にはログインもデータベース内のユーザーもありません。
次に、ユーザーがログに記録されるWindowsグループの名前を取得したいと思います。ただし、suser_sname()
実際のユーザー名を返します。suser_sid()
私も助けにはなりません。
誰かがこれを行う方法を知っていますか?
ユーザーがWindowsグループを介してSQLServerにログインできるシナリオがあります。ユーザー自体にはログインもデータベース内のユーザーもありません。
次に、ユーザーがログに記録されるWindowsグループの名前を取得したいと思います。ただし、suser_sname()
実際のユーザー名を返します。suser_sid()
私も助けにはなりません。
誰かがこれを行う方法を知っていますか?
DECLARE @user SYSNAME;
SET @user = SUSER_SNAME();
EXEC xp_logininfo @user, 'all';
これにより、ユーザーが所属するすべてのグループの行が返されます(行の列にはnull以外の値が含まれpermission path
ます)。ただし、自分のユーザー名の行も返します(私の場合permission path
、その行はnullでした)。
また、次のクエリで表示される可能性のあるすべてのグループを表示できます。
SELECT * FROM master.sys.server_principals
WHERE type = 'G'; -- type_desc = 'WINDOWS_GROUP'
ユーザーは、SQLServerに登録されていない他のADグループのメンバーである可能性もあります。そのためにはADに行く必要があります。