sp_table_privileges (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
指定したテーブルのテーブル権限 ( INSERT
、 DELETE
、 UPDATE
、 SELECT
、 REFERENCES
など) の一覧を返します。
構文
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 の既定のテーブル可視性ルールが適用されます。
現在のユーザーが指定した名前のテーブルを所有している場合は、そのテーブルの列が返されます。 ownerが指定されておらず、現在のユーザーが指定した name を持つテーブルを所有していない場合、このプロシージャは、データベース所有者が所有する指定したtable_nameを持つテーブルを検索します。 そのテーブルが存在する場合、そのテーブルの列が返されます。
[ @table_qualifier = ] N'table_qualifier'
テーブル修飾子の名前。 @table_qualifier は sysname で、既定値は NULL
です。 さまざまな DBMS 製品で、テーブルについて 3 パート構成の名前 (qualifier.owner.name) がサポートされています。 SQL Server では、この列はデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。
[ @fUsePattern = ] fUsePattern
アンダースコア (_
)、パーセント (%
)、角かっこ ([
または ]
) の文字をワイルドカード文字として解釈するかどうかを指定します。 有効な値は 0
(パターン マッチングがオフ) と 1
(パターン マッチングがオン) です。 @fUsePattern は bit で、既定値は 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 に与えられるアクションのスコープは、データ ソースに依存します。 たとえば、 UPDATE 権限を使用すると、 GRANTEE は 1 つのデータ ソース上のテーブル内のすべての列を更新でき、 GRANTOR が別のデータ ソースに対して UPDATE 権限を持つ列のみを更新できます。 |
IS_GRANTABLE |
sysname | GRANTEE が他のユーザーにアクセス許可を付与できるかどうかを示します (多くの場合、"許可付き許可" アクセス許可と呼ばれます)。 YES 、NO 、または NULL を指定できます。 不明な (または NULL ) 値は、"grant with grant" が適用されないデータ ソースを参照します。 |
解説
sp_table_privileges
ストアド プロシージャは、ODBC でのSQLTablePrivileges
と同じです。 返される結果は、 TABLE_QUALIFIER
、 TABLE_OWNER
、 TABLE_NAME
、および PRIVILEGE
順に並べられます。
アクセス許可
スキーマに対する SELECT
アクセス許可が必要です。
例
次の例では、 Contact
という単語で始まる名前を持つすべてのテーブルに関する特権情報を返します。
USE AdventureWorks2022;
GO
EXEC sp_table_privileges @table_name = 'Contact%';