sys.server_role_members (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance Analytics Platform System (PDW)
固定サーバー ロールおよびユーザー定義サーバー ロールのメンバーごとに 1 行のデータを返します。
列名 | データ型 | 説明 |
---|---|---|
role_principal_id | int | ロールのサーバー プリンシパル ID。 |
member_principal_id | int | メンバーのサーバー プリンシパル ID。 |
サーバー ロール メンバーシップを追加または削除するには、 ALTER SERVER ROLE (Transact-SQL) ステートメントを使用します。
アクセス許可
ログインでは、独自のサーバー ロール メンバーシップを表示したり、固定サーバー ロールのメンバーのprincipal_idを表示したりできます。 すべてのサーバー ロール メンバーシップを表示するには、 VIEW ANY DEFINITION securityadmin 固定サーバー ロールの権限またはメンバーシップが必要です。
ログインでは、自分が所有するロールのロール メンバーシップを表示することもできます。
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_members
と sys.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)
サーバーレベルのロール
プリンシパル (データベース エンジン)