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 DATABASE
CREATE DEFAULT
CREATE FUNCTION
CREATE PROCEDURE
CREATE RULE
CREATE TABLE
CREATE VIEW
BACKUP DATABASE
BACKUP LOG
[ @username = ] 'security_account'
レポートされる権限に関連するプリンシパルの名前を指定します。security_account のデータ型は sysname で、既定値は NULL です。NULL の場合は、現在のデータベースのすべてのプリンシパルが返されます。security_account は現在のデータベースに存在する必要があります。[ @grantorname = ] 'grantor'
権限を許可したプリンシパルの名前を指定します。grantor のデータ型は sysname で、既定値は NULL です。NULL の場合は、データベース内のすべてのプリンシパルにより許可された権限に関する情報がすべて返されます。[ @permissionarea = ] 'type'
オブジェクト権限 (文字列 o) を表示するか、ステートメント権限 (文字列 s) を表示するか、または両方 (os) を表示するかを指定します。type のデータ型は varchar(10) で、既定値は os です。type には、o と s の任意の組み合わせを指定できます。o と s の間には、コンマまたは空白を入れても入れなくてもかまいません。
戻り値
0 (成功) または 1 (失敗)
結果セット
列名 |
データ型 |
説明 |
---|---|---|
Owner |
sysname |
オブジェクト所有者の名前。 |
Object |
sysname |
オブジェクトの名前。 |
Grantee |
sysname |
権限が許可されたプリンシパルの名前。 |
Grantor |
sysname |
指定したユーザーに権限を許可したプリンシパルの名前。 |
ProtectType |
nvarchar(10) |
保護の種類の名前。 GRANT REVOKE |
Action |
nvarchar(20) |
権限の名前。
|
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'