sp_helprotect (Transact-SQL)

適用対象: SQL サーバー

現在のデータベースのオブジェクトまたはステートメント権限に対するユーザー権限に関する情報を示すレポートを返します。

重要

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

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

Transact-SQL 構文表記規則

構文

sp_helprotect
    [ [ @name = ] N'name' ]
    [ , [ @username = ] N'username' ]
    [ , [ @grantorname = ] N'grantorname' ]
    [ , [ @permissionarea = ] 'permissionarea' ]
[ ; ]

引数

[ @name = ] N'name'

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

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

[ @username = ] N'username'

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

[ @grantorname = ] N'grantorname'

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

[ @permissionarea = ] 'permissionarea'

オブジェクト権限 (文字列 o)、ステートメントのアクセス許可 (文字列 s)、またはその両方 (o s) を表示するかどうかを示す文字列。 @permissionareavarchar(10) で、既定値は o s です。 @permissionareaは、osの間にコンマまたはスペースを使用して、osの任意の組み合わせを使用できます。

リターン コードの値

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

結果セット

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

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

All = 権限は、オブジェクトのすべての現在の列を対象とします。
New = アクセス許可は、後でオブジェクトの ( ALTER ステートメントを使用して) 変更される可能性のある新しい列を対象としています。
All+New = AllNewの組み合わせ。

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

解説

次のプロシージャでは、すべてのパラメーターが省略可能です。 パラメーターなしで実行した場合、 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';