sp_helprotect (Transact-SQL)

適用対象:SQL Server

現在のデータベースのオブジェクトまたはステートメントのアクセス許可に対するユーザーのアクセス許可に関する情報を含むレポートを返します。

重要

sp_helprotectでは、SQL Server 2005 (9.x) で導入されたセキュリティ保護可能なリソースに関する情報は返されません。 代わりに 、sys.database_permissionsfn_builtin_permissions を使用してください。

固定サーバー ロールまたは固定データベース ロールに常に割り当てられる権限は表示されません。 ロールのメンバーシップに基づいてアクセス許可を受け取るログインまたはユーザーは含まれません。

Transact-SQL 構文表記規則

構文

  
sp_helprotect [ [ @name = ] 'object_statement' ]   
     [ , [ @username = ] 'security_account' ]   
     [ , [ @grantorname = ] 'grantor' ]   
     [ , [ @permissionarea = ] 'type' ]  

引数

[ @name = ] 'object_statement' 現在のデータベース内のオブジェクトの名前、またはレポートするアクセス許可を持つステートメントを指定します。 object_statementnvarchar(776)で、既定値は NULL で、すべてのオブジェクトとステートメントのアクセス許可を返します。 値がオブジェクト (テーブル、ビュー、ストアド プロシージャ、または拡張ストアド プロシージャ) の場合は、現在のデータベース内の有効なオブジェクトである必要があります。 オブジェクト名には、フォーム所有者に所有者修飾子を含めることができますobject

object_statementがステートメントの場合は、CREATE ステートメントにすることができます。

[ @username = ] 'security_account' アクセス許可が返されるプリンシパルの名前です。 security_accountsysname で、既定値は NULL で、現在のデータベース内のすべてのプリンシパルを返します。 security_account は、現在のデータベースに存在する必要があります。

[ @grantorname = ] 'grantor' アクセス許可を付与したプリンシパルの名前です。 grantorsysname で、既定値は NULL で、データベース内の任意のプリンシパルによって付与されたアクセス許可のすべての情報を返します。

[ @permissionarea = ] 'type' オブジェクトのアクセス許可 (文字列 o)、ステートメントのアクセス許可 (文字文字列 )、または両方 (os) を表示するかどうかを示す文字列です。 typevarchar(10)で、既定値は os ですには、os の任意の組み合わせを指定できます。o と sの間にコンマまたはスペースを含めるか、または使用しないでください。

リターン コードの値

0 (成功) または 1 (失敗)

結果セット

列名 データ型 説明
所有者 sysname オブジェクト所有者の名前。
Object sysname オブジェクト名。
権限 sysname 権限が許可されたプリンシパルの名前。
Grantor sysname 指定した権限付与対象ユーザーにアクセス許可を付与したプリンシパルの名前。
ProtectType nvarchar(10) 保護の種類の名前:

GRANT REVOKE
操作 nvarchar(60) アクセス許可の名前。 有効な権限ステートメントは、オブジェクトの種類によって異なります。
sysname アクセス許可の種類:

All = オブジェクトの現在の列すべてに対する権限

New = Permission は、後でオブジェクトの (ALTER ステートメントを使用して) 変更される可能性のある新しい列を対象とします。

All+New = All と New を組み合わせた権限

権限の種類が列に適用されない場合は、ピリオドを返します。

解説

次のプロシージャでは、すべてのパラメーターが省略可能です。 パラメーターなしで実行された場合は、 sp_helprotect 現在のデータベースで許可または拒否されたすべてのアクセス許可が表示されます。

すべてではなく一部のパラメーターだけを指定する場合は、特定のパラメーターを示す名前付きのパラメーターを使用するか、プレースホルダーとして NULL を使用します。 たとえば、権限付与者データベース所有者 (dbo) のすべてのアクセス許可を報告するには、次を実行します。

EXEC sp_helprotect NULL, NULL, dbo;  

または

EXEC sp_helprotect @grantorname = 'dbo';  

出力レポートは、アクセス許可カテゴリ、所有者、オブジェクト、権限付与対象ユーザー、権限付与者、保護の種類のカテゴリ、保護の種類、アクション、列のシーケンシャル ID で並べ替えられます。

アクセス許可

ロール public のメンバーシップが必要です。

返される情報は、メタデータへのアクセスに関する制限の対象となります。 プリンシパルにアクセス許可がないエンティティは表示されません。 詳細については、「 Metadata Visibility Configuration」を参照してください。

A. テーブルのアクセス許可を一覧表示する

次の例では、テーブル titles の権限に関するレポートを一覧表示します。

EXEC sp_helprotect 'titles';  

B. ユーザーに対する権限を一覧表示する

次の例では、ユーザー Judy が現在のデータベースに持っているすべてのアクセス許可を一覧表示します。

EXEC sp_helprotect NULL, 'Judy';  

C. 特定のユーザーによって付与されたアクセス許可の一覧表示

次の例では、現在のデータベース内でユーザー Judy に許可されたすべての権限を一覧表示します。指定しないパラメーターについては、プレースホルダーとして NULL を使用します。

EXEC sp_helprotect NULL, NULL, 'Judy';  

D. ステートメントのアクセス許可のみを一覧表示する

次の例では、現在のデータベース内のすべてのステートメント権限を表示します。指定しないパラメーターについては、プレースホルダーとして NULL を使用します。

EXEC sp_helprotect NULL, NULL, NULL, 's';   

e. CREATE ステートメントの権限だけを一覧表示する

次の例では、CREATE TABLE 権限が付与されているすべてのユーザーを一覧表示します。

EXEC sp_helprotect @name = 'CREATE TABLE';  

参照

セキュリティ ストアド プロシージャ (Transact-SQL)
DENY (Transact-SQL)
GRANT (Transact-SQL)
REVOKE (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)