sp_helprotect (Transact-SQL)
現在のデータベースにおける、オブジェクトに対するユーザー権限、またはステートメント権限に関する情報のレポートを返します。
重要 |
---|
sp_helprotect では、SQL Server 2005 に導入されたセキュリティ保護可能なリソースに関する情報は返されません。代わりに、sys.database_permissions および fn_builtin_permissions を使用してください。 |
固定サーバー ロールまたは固定データベース ロールに常に割り当てられる権限は表示されません。ロールのメンバーシップに基づいて権限が与えられるログインまたはユーザーは含まれません。
構文
sp_helprotect [ [ @name = ] 'object_statement' ]
[ , [ @username = ] 'security_account' ]
[ , [ @grantorname = ] 'grantor' ]
[ , [ @permissionarea = ] 'type' ]
引数
[ @name = ] 'object_statement'
レポートする権限が存在する、現在のデータベースのオブジェクトまたはステートメントの名前を指定します。object_statement のデータ型は nvarchar(776) で、既定値は NULL です。NULL の場合は、すべてのオブジェクトとステートメントの権限が返されます。値がオブジェクト (テーブル、ビュー、ストアド プロシージャ、または拡張ストアド プロシージャ) の場合は、現在のデータベース内の有効なオブジェクトであることが必要です。オブジェクト名には、owner**.**object の形式で、所有者の修飾子を含めることができます。object_statement がステートメントの場合は、CREATE ステートメントを指定できます。
[ @username = ] 'security_account'
レポートされる権限に関連するプリンシパルの名前を指定します。security_account のデータ型は sysname で、既定値は NULL です。NULL の場合は、現在のデータベースのすべてのプリンシパルが返されます。security_account は現在のデータベースに存在する必要があります。[ @grantorname = ] 'grantor'
権限を許可したプリンシパルの名前を指定します。grantor のデータ型は sysname で、既定値は NULL です。NULL の場合は、データベース内のすべてのプリンシパルにより許可された権限に関する情報がすべて返されます。[ @permissionarea = ] 'type'
オブジェクト権限 (文字列 o) を表示するか、ステートメント権限 (文字列 s) を表示するか、または両方 (o s) を表示するかを指定します。type のデータ型は varchar(10) で、既定値は o s です。type には、o と s の任意の組み合わせを指定できます。o と s の間には、コンマまたは空白を入れても入れなくてもかまいません。
リターン コード値
成功した場合は 0 を、失敗した場合は 1 をそれぞれ返します。
結果セット
列名 |
データ型 |
説明 |
---|---|---|
所有者 |
sysname |
オブジェクト所有者の名前。 |
オブジェクト |
sysname |
オブジェクトの名前。 |
Grantee |
sysname |
権限が許可されたプリンシパルの名前。 |
権限の許可者 |
sysname |
指定したユーザーに権限を許可したプリンシパルの名前。 |
ProtectType |
nvarchar(10) |
保護の種類の名前。 GRANT REVOKE |
操作 |
nvarchar(60) |
権限の名前。有効な権限ステートメントは、オブジェクトの種類によって異なります。 |
Column |
sysname |
権限の種類。 All = オブジェクトの現在の列すべてに対する権限 New = 今後 ALTER ステートメントを使用して変更される可能性のある、オブジェクトの新しい列に対する権限 All+New = All と New を組み合わせた権限 権限の種類が列に適用されない場合は、ピリオドを返します。 |
説明
次のプロシージャでは、すべてのパラメーターが省略可能です。どのパラメーターも指定せずに実行した場合、sp_helprotect では現在のデータベースで許可または拒否されているすべての権限が表示されます。
すべてではなく一部のパラメーターだけを指定する場合は、特定のパラメーターを示す名前付きのパラメーターを使用するか、プレースホルダーとして NULL を使用します。たとえば、データベース所有者 dbo に関するすべての権限をレポートするには、次のように実行します。
EXEC sp_helprotect NULL, NULL, dbo
または
EXEC sp_helprotect @grantorname = 'dbo'
レポートは、権限カテゴリ、所有者、オブジェクト、被許可者、許可者、保護の種類のカテゴリ、保護の種類、動作、列順序 ID で並べ替えられます。
権限
ロール public のメンバーシップが必要です。
返される情報は、メタデータへのアクセスに関する制限の対象となります。プリンシパルに権限がないエンティティは表示されません。詳細については、「メタデータ表示の構成」を参照してください。
使用例
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';