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) の既定のテーブル可視性規則が適用されます。
SQL Server 2005 では、指定した名前のテーブルを現在のユーザーが所有している場合、そのテーブルの列が返されます。table_owner を指定せず、table_name で指定したテーブルを現在のユーザーが所有していない場合、sp_column privileges では、データベース所有者が所有する table_name のテーブルが検索されます。存在する場合は、そのテーブルの列が返されます。
[ @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 のワイルドカード パターンを使用したワイルドカード文字を含めることができます。相互運用性を最大にするため、ゲートウェイのクライアントでは、SQL-92 標準のパターン (% と _ のワイルドカード文字) のみを使用してください。
結果セット
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 AdventureWorks;
GO
EXEC sp_column_privileges @table_name = 'Employee',
@table_owner = 'HumanResources',
@table_qualifier = 'AdventureWorks',
@column_name = 'SalariedFlag'
参照
関連項目
GRANT (Transact-SQL)
REVOKE (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)