sp_column_privileges (Transact-SQL)

現在の環境で、1 つのテーブルに関する列の権限情報を返します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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 で指定したテーブルを現在のユーザーが所有していない場合、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 のワイルドカード パターンを使用したワイルドカード文字を含めることができます。相互運用性を最大にするため、ゲートウェイのクライアントでは、ISO 標準のパターン (% と _ のワイルドカード文字) のみを使用してください。

結果セット

sp_column_privileges は、ODBC の SQLColumnPrivileges に相当します。返される結果は TABLE_QUALIFIERTABLE_OWNERTABLE_NAMECOLUMN_NAMEPRIVILEGE の値に従って並べ替えられます。

列名

データ型

説明

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';