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 のテーブルを現在のユーザーが所有していない場合は、データベース所有者が所有する、指定した 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';

関連項目

参照

GRANT (Transact-SQL)

REVOKE (Transact-SQL)

システム ストアド プロシージャ (Transact-SQL)