sp_table_privileges (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

指定したテーブルまたはテーブルに対するテーブル権限の一覧 (例: INSERT, UPDATEDELETE, , SELECT) REFERENCESを返します。

Transact-SQL 構文表記規則

構文

sp_table_privileges
    [ @table_name = ] N'table_name'
    [ , [ @table_owner = ] N'table_owner' ]
    [ , [ @table_qualifier = ] N'table_qualifier' ]
    [ , [ @fUsePattern = ] fUsePattern ]
[ ; ]

[ @table_name = ] N'table_name'

カタログ情報を返すために使用されるテーブル。 @table_nameは nvarchar(384)で、既定値はありません。 ワイルドカードのパターン マッチングがサポートされています。

[ @table_owner = ] N'table_owner'

カタログ情報を返すために使用されるテーブルのテーブル所有者。 @table_ownerは nvarchar(384) で、既定値は NULL. ワイルドカードのパターン マッチングがサポートされています。 所有者が指定されていない場合は、基になる DBMS の既定のテーブル可視性ルールが適用されます。

現在のユーザーが指定した名前のテーブルを所有している場合は、そのテーブルの列が返されます。 所有者が指定されておらず、現在のユーザーが指定した名前のテーブルを所有していない場合、このプロシージャは、データベース所有者が所有する指定したtable_nameを持つテーブルを検索します。 そのテーブルが存在する場合、そのテーブルの列が返されます。

[ @table_qualifier = ] N'table_qualifier'

テーブル修飾子の名前。 @table_qualifierは sysname で、既定値は NULL. さまざまな DBMS 製品で、テーブルについて 3 パート構成の名前 (qualifier.owner.name) がサポートされています。 SQL Server では、この列はデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。

[ @fUsePattern = ] fUsePattern

アンダースコア ()、パーセント (_)、角かっこ (%[または]) 文字をワイルドカード文字として解釈するかどうかを指定します。 有効な値は 0 (パターン マッチングがオフ)、( 1 パターン マッチングがオン) です。 @fUsePatternはビットで、既定値は 1.

リターン コードの値

なし。

結果セット

列名 データ型 説明
TABLE_QUALIFIER sysname テーブルの修飾子名です。 SQL Server では、この列はデータベース名を表します。 このフィールドは NULL.
TABLE_OWNER sysname テーブル所有者の名前。 このフィールドには常に値が返されます。
TABLE_NAME sysname テーブル名。 このフィールドには常に値が返されます。
GRANTOR sysname リストにGRANTEE対するアクセス許可TABLE_NAMEが付与されているデータベース ユーザー名。 SQL Server では、この列は常に TABLE_OWNER. このフィールドには常に値が返されます。 また、GRANTOR 列は、データベース所有者 (TABLE_OWNER) またはデータベース所有者がステートメント内GRANTの句を使用してアクセス許可をWITH GRANT OPTION付与したユーザーのいずれかになります。
GRANTEE sysname 一覧に示GRANTORされているデータベース ユーザー名に対するTABLE_NAMEアクセス許可が付与されています。 SQL Server では、この列には常にビューのデータベース ユーザーが sys.database_principalssystem 含まれます。 このフィールドには常に値が返されます。
PRIVILEGE sysname 使用可能なテーブル権限の 1 つ。 テーブル権限は、次に挙げる値 (または実装が定義されるときにデータ ソースによってサポートされるその他の値) のいずれかになります。

SELECT = GRANTEE では、1 つ以上の列のデータを取得できます。

INSERT = GRANTEE では、1 つ以上の列の新しい行のデータを提供できます。

UPDATE = GRANTEE では、1 つ以上の列の既存のデータを変更できます。

DELETE = GRANTEE では、テーブルから行を削除できます。

REFERENCES = GRANTEE では、主キー/外部キーリレーションシップの外部テーブル内の列を参照できます。 SQL Server では、主キーと外部キーのリレーションシップはテーブル制約を使用して定義されます。

特定のテーブル権限によって与えられるアクションの GRANTEE スコープは、データ ソースに依存します。 たとえば、 UPDATEGRANTEE 1 つのデータ ソース上のテーブル内のすべての列を更新し、別のデータ ソースに対 GRANTOR する権限を持つ UPDATE 列のみを更新できます。
IS_GRANTABLE sysname 他のユーザーにアクセス許可を GRANTEE 付与することを許可するかどうかを示します (多くの場合、"許可付き許可" アクセス許可と呼ばれます)。 YESNO、または NULL を指定できます。 不明な (または NULL) 値は、"grant with grant" が適用されないデータ ソースを参照します。

解説

ストアド プロシージャは sp_table_privileges ODBC と同じです SQLTablePrivileges 。 返される結果は 、 TABLE_QUALIFIER、、 TABLE_OWNERTABLE_NAME、および PRIVILEGE.

アクセス許可

スキーマに対する SELECT アクセス許可が必要です。

次の例では、単語 Contactで始まる名前を持つすべてのテーブルに関する特権情報を返します。

USE AdventureWorks2022;
GO
EXEC sp_table_privileges @table_name = 'Contact%';