Share via


sp_helprotect (Transact-SQL)

適用対象:SQL Server

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

重要

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'

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

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

[ @username = ] N'username'

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

[ @grantorname = ] N'grantorname'

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

[ @permissionarea = ] 'permissionarea'

オブジェクトのアクセス許可 (文字列)、ステートメントのアクセス許可 (文字列o)、またはその両方o s () を表示するかどうかを示す文字列s@permissionareaは varchar(10) で、既定値は o s. @permissionareaは、コンマまたはスペースsoの有無にかかわらず、任意の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';