0
のメンバーではない私は、次のようにストアドプロシージャを経由して特定のユーザーのデータベース・ロールを取得しています:戻りデータベースロールのユーザーが
USE SQLEXP_ALLEN
GO
SELECT
DP1.name AS RoleName,
ISNULL(DP2.name, 'No members') AS UserName
FROM
sys.database_role_members AS DRM
RIGHT OUTER JOIN
sys.database_principals AS DP1 ON DRM.role_principal_id = DP1.principal_id
LEFT OUTER JOIN
sys.database_principals AS DP2 ON DRM.member_principal_id = DP2.principal_id
WHERE
DP1.type = 'R'
AND DP2.name = @username
ORDER BY
DP1.name;
しかし、私が来るする方法を見つけ出すように見えることはできませんユーザーがメンバーではないロールを使用して起動します。助けて!
私はおそらく非常に多くのCTEを必要としませんが、それはロジックを説明し
DP2.Nameの述語は、左結合を内部結合にしています。 –