sp_helprotect (Transact-SQL)
適用対象:SQL Server
現在のデータベースのオブジェクトまたはステートメントのアクセス許可に対するユーザーのアクセス許可に関する情報を含むレポートを返します。
重要
sp_helprotectでは、SQL Server 2005 (9.x) で導入されたセキュリティ保護可能なリソースに関する情報は返されません。 代わりに 、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 で、すべてのオブジェクトとステートメントのアクセス許可を返します。 値がオブジェクト (テーブル、ビュー、ストアド プロシージャ、または拡張ストアド プロシージャ) の場合は、現在のデータベース内の有効なオブジェクトである必要があります。 オブジェクト名には、フォーム所有者に所有者修飾子を含めることができます。object。
object_statementがステートメントの場合は、CREATE ステートメントにすることができます。
[ @username = ] 'security_account'
アクセス許可が返されるプリンシパルの名前です。 security_account は sysname で、既定値は NULL で、現在のデータベース内のすべてのプリンシパルを返します。 security_account は、現在のデータベースに存在する必要があります。
[ @grantorname = ] 'grantor'
アクセス許可を付与したプリンシパルの名前です。 grantor は sysname で、既定値は NULL で、データベース内の任意のプリンシパルによって付与されたアクセス許可のすべての情報を返します。
[ @permissionarea = ] 'type'
オブジェクトのアクセス許可 (文字列 o)、ステートメントのアクセス許可 (文字文字列 )、または両方 (os) を表示するかどうかを示す文字列です。 type は varchar(10)で、既定値は os です。型には、o と s の任意の組み合わせを指定できます。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)
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示