sp_column_privileges (Transact-SQL)
現在の環境で、1 つのテーブルに関する列の権限情報を返します。
構文
sp_column_privileges [ @table_name = ] 'table_name'
[ , [ @table_owner = ] 'table_owner' ]
[ , [ @table_qualifier = ] 'table_qualifier' ]
[ , [ @column_name = ] 'column' ]
引数
[ @table\_name= ] 'table_name'
カタログ情報を返すために使用するテーブルを指定します。 table_name のデータ型は sysname で、既定値はありません。 ワイルドカードによるパターン照合はサポートされていません。[ @table\_owner= ] 'table_owner'
カタログ情報を返すために使用するテーブルの所有者を指定します。 table_owner のデータ型は sysname で、既定値は NULL です。 ワイルドカードによるパターン照合はサポートされていません。 table_owner を指定しない場合は、基になるデータベース管理システム (DBMS) の既定のテーブル可視性規則が適用されます。指定した名前のテーブルを現在のユーザーが所有している場合は、そのテーブルの列が返されます。 table_owner を指定せず、また指定した table_name のテーブルを現在のユーザーが所有していない場合は、データベース所有者が所有する、指定した table_name のテーブルが sp_column privileges によって検索されます。 存在する場合は、そのテーブルの列が返されます。
[ @table\_qualifier= ] 'table_qualifier'
テーブル識別子の名前です。 table_qualifier のデータ型は sysname で、既定値は NULL です。 さまざまな DBMS 製品で、3 つの要素で構成されたテーブル名 (qualifier**.owner.**name) を使用できます。 SQL Server では、この列はデータベース名を表します。 製品によっては、テーブルのデータベース環境のサーバー名を表す場合があります。[ @column\_name= ] 'column'
カタログ情報を 1 列だけ取得する場合に使用する 1 つの列を指定します。 column のデータ型は nvarchar(384) で、既定値は NULL です。 column を指定しない場合、すべての列が返されます。 SQL Server では、column は sys.columns テーブルに表示される列名を表します。 column には、基になる DBMS のワイルドカード パターンを使用したワイルドカード文字を含めることができます。 相互運用性を最大にするため、ゲートウェイのクライアントでは、ISO 標準のパターン (% と _ のワイルドカード文字) のみを使用してください。
結果セット
sp_column_privileges は、ODBC の SQLColumnPrivileges に相当します。 返される結果は、TABLE_QUALIFIER、TABLE_OWNER、TABLE_NAME、COLUMN_NAME、および PRIVILEGE の順序に従って並べ替えられます。
列名 |
データ型 |
説明 |
---|---|---|
TABLE_QUALIFIER |
sysname |
テーブル修飾子の名前。 このフィールドは NULL の場合もあります。 |
TABLE_OWNER |
sysname |
テーブル所有者の名前。 このフィールドは常に値を返します。 |
TABLE_NAME |
sysname |
テーブル名。 このフィールドは常に値を返します。 |
COLUMN_NAME |
sysname |
返される TABLE_NAME の各列の列名。 このフィールドは常に値を返します。 |
GRANTOR |
sysname |
この COLUMN_NAME の権限を、表示される GRANTEE に与えたデータベース ユーザーの名前。 SQL Server では、この列は常に TABLE_OWNER と同じです。 このフィールドは常に値を返します。 GRANTOR 列には、データベース所有者 (TABLE_OWNER) が返されます。また、データベース所有者が GRANT ステートメントで WITH GRANT OPTION 句を使用して権限を与えたユーザーが返される場合もあります。 |
GRANTEE |
sysname |
この COLUMN_NAME の権限を、表示される GRANTOR によって与えられたデータベース ユーザーの名前。 SQL Server では、この列には常に、sysusers テーブルに記録されているデータベース ユーザーが格納されます。 このフィールドは常に値を返します。 |
PRIVILEGE |
varchar(32) |
有効な列権限。 列権限は、次に挙げる値 (または実装が定義されるときにデータ ソースによってサポートされるその他の値) のいずれかになります。 SELECT。GRANTEE は、列からデータを取得できます。 INSERT。GRANTEE は、テーブルに新しい行を挿入したときにこの列のデータを設定できます。 UPDATE。GRANTEE は、列内の既存のデータを修正できます。 REFERENCES。GRANTEE は、主キー/外部キーのリレーションシップで外部テーブル内の列を参照できます。 主キー/外部キーのリレーションシップは、テーブル制約を使って定義できます。 |
IS_GRANTABLE |
varchar(3) |
GRANTEE が他のユーザーに権限を与えることが許可されているかどうかを示します。これは "許可の許可" 権限とも呼ばれます。 YES、NO、NULL のいずれかになります。 不明な値または NULL の場合は、"許可の許可" が適用されないデータ ソースであることを示します。 |
説明
SQL Server では、権限は GRANT ステートメントで与え、REVOKE ステートメントで取り消します。
権限
スキーマに対する SELECT 権限が必要です。
使用例
次の例では、特定の列の列権限情報を返します。
USE AdventureWorks2012;
GO
EXEC sp_column_privileges @table_name = 'Employee'
,@table_owner = 'HumanResources'
,@table_qualifier = 'AdventureWorks2012'
,@column_name = 'SalariedFlag';