sys.server_role_members (Transact-SQL)

適用対象:SQL ServerAzure SQL Managed InstanceAnalytics Platform System (PDW)

固定サーバー ロールおよびユーザー定義サーバー ロールのメンバーごとに 1 行のデータを返します。

列名 データ型 説明
role_principal_id int ロールのサーバー プリンシパル ID。
member_principal_id int メンバーのサーバー プリンシパル ID。

サーバー ロール メンバーシップを追加または削除するには、ALTER Standard Edition RVER ROLE (Transact-SQL) ステートメントを使用します。

アクセス許可

ログインでは、独自のサーバー ロール メンバーシップを表示したり、固定サーバー ロールのメンバーのprincipal_idを表示したりできます。 すべてのサーバー ロール メンバーシップを表示するには、securityadmin 固定サーバー ロールの VIEW ANY DEFINITION 権限またはメンバーシップが必要です。

ログインでは、自分が所有するロールのロール メンバーシップを表示することもできます。

Azure SQL Database では、サーバー ロール ##MS_DefinitionReader## の メンバーは、すべてのカタログ ビューに対してクエリを実行できます。

詳細については、「 Metadata Visibility Configuration」を参照してください。

このセクションの例では、Azure SQL Database のサーバーレベルのロールを使用する方法が示されています。

A. サーバー ロール メンバーの一覧を返す

次の例では、ロールとそのメンバーの名前と ID を返します。

SELECT	roles.principal_id							AS RolePrincipalID
	,	roles.name									AS RolePrincipalName
	,	server_role_members.member_principal_id		AS MemberPrincipalID
	,	members.name								AS MemberPrincipalName
FROM sys.server_role_members AS server_role_members
INNER JOIN sys.server_principals AS roles
    ON server_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.server_principals AS members 
    ON server_role_members.member_principal_id = members.principal_id  
;

Note

Azure SQL Database では、SQL ログインはカタログ ビューに sys.server_principals 保持されません。 そのため、Azure SQL Database でサーバー レベルのロール メンバーシップを取得するには、カタログ ビュー sys.sql_logins を参加させる必要があります。

B. Azure SQL Database: サーバー レベルのロールのメンバーであるすべてのプリンシパル (SQL 認証) を一覧表示する

次のステートメントでは、カタログ ビュー sys.server_role_memberssys.sql_logins を使用して、任意の固定サーバーレベルのロールのすべてのメンバーが返されます。 このステートメントは、仮想マスター データベースで実行する必要があります。

SELECT
		sql_logins.principal_id			AS MemberPrincipalID
	,	sql_logins.name					AS MemberPrincipalName
	,	roles.principal_id				AS RolePrincipalID
	,	roles.name						AS RolePrincipalName
FROM sys.server_role_members AS server_role_members
INNER JOIN sys.server_principals AS roles
    ON server_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.sql_logins AS sql_logins 
    ON server_role_members.member_principal_id = sql_logins.principal_id
;  
GO  

参照

カタログ ビュー (Transact-SQL)
セキュリティ カタログ ビュー (Transact-SQL)
サーバーレベルのロール
プリンシパル (データベース エンジン)