sp_table_privileges (Transact-SQL)
指定した 1 つ以上のテーブルに対するテーブル権限 (INSERT、DELETE、UPDATE、SELECT、REFERENCES など) の一覧を返します。
構文
sp_table_privileges [ @table_name = ] 'table_name'
[ , [ @table_owner = ] 'table_owner' ]
[ , [ @table_qualifier = ] 'table_qualifier' ]
[ , [@fUsePattern =] 'fUsePattern']
引数
[ @table_name=] 'table_name'
カタログ情報を返すために使用するテーブルを指定します。table_name のデータ型は nvarchar(384) で、既定値はありません。ワイルドカードによるパターン照合がサポートされています。
[ @table_owner=] 'table_owner'
カタログ情報を返すために使用するテーブル所有者を指定します。table_owner のデータ型は nvarchar(384) で、既定値は NULL です。ワイルドカードによるパターン照合がサポートされています。所有者を指定しない場合は、基になる DBMS の既定のテーブル可視性ルールが適用されます。
SQL Server 2005 では、指定した名前のテーブルを現在のユーザーが所有している場合、そのテーブルの列が返されます。table_owner を指定せず、また指定した table_name のテーブルを現在のユーザーが所有していない場合、このプロシージャでは、データベース所有者が所有する table_name のテーブルが検索されます。そのテーブルが存在する場合、そのテーブルの列が返されます。
[ @table_qualifier =] '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 |
この TABLE_NAME の権限を、表示される GRANTEE に与えたデータベース ユーザーの名前。SQL Server では、この列は常に TABLE_OWNER と同じです。このフィールドは常に値を返します。GRANTOR 列は、データベース所有者 (TABLE_OWNER)、または GRANT ステートメントで WITH GRANT OPTION 句を使用して、データベース所有者が権限を許可したユーザーのいずれかです。 |
GRANTEE |
sysname |
この TABLE_NAME の権限を、表示される GRANTOR によって与えられたデータベース ユーザーの名前。SQL Server では、この列には常に sys.database_principals システム ビューからのデータベース ユーザーが含まれます。このフィールドは常に値を返します。 |
PRIVILEGE |
sysname |
使用可能なテーブル権限の 1 つ。テーブル権限は、次に挙げる値 (またはインプリメンテーションが定義されるときにデータ ソースによってサポートされるその他の値) の 1 つになります。 SELECT。GRANTEE は、1 列以上のデータを取得できます。 INSERT。GRANTEE は、新しい行の 1 列以上にデータを提供できます。 UPDATE。GRANTEE は、1 列以上の既存のデータを修正できます。 DELETE。GRANTEE は、テーブルから行を削除できます。 REFERENCES。GRANTEE は、主キー/外部キーのリレーションシップで外部テーブル内の列を参照できます。SQL Server では、主キー/外部キーのリレーションシップはテーブル制約で定義されます。 与えられたテーブル特権によって GRANTEE に認められる操作の範囲は、データ ソースに依存します。たとえば、UPDATE 特権の場合、GRANTEE は、あるデータ ソース上ではテーブルのすべての列を更新することが許可されても、別のデータ ソース上では、GRANTOR が UPDATE 特権を持っている列しか更新できないことがあります。 |
IS_GRANTABLE |
sysname |
GRANTEE が他のユーザーに権限を与えることが許可されているかどうか ("許可の許可" とも呼ばれる) を示します。YES、NO、NULL のいずれかになります。不明 (つまり NULL) の値は、"許可の許可" が適用されないデータ ソースを示します。 |
解説
sp_table_privileges ストアド プロシージャは、ODBC の SQLTablePrivileges に相当します。返される結果は、TABLE_QUALIFIER、TABLE_OWNER、TABLE_NAME、PRIVILEGE の順序に従って並べ替えられます。
権限
スキーマに対する SELECT 権限が必要です。
戻り値
なし
例
次の例では、単語 Contact
で始まる名前が付いているすべてのテーブルに関する権限情報が返されます。
USE AdventureWorks;
GO
EXEC sp_table_privileges
@table_name = 'Contact%';
参照
関連項目
ストアド プロシージャ カタログ (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)