sp_column_privileges (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

現在の環境の 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_namesysname で、既定値はありません。 ワイルドカード パターン マッチングはサポートされていません。

[ @table_owner= ] 'table_owner'
カタログ情報を返すために使用されるテーブルの所有者です。 table_ownersysname で、既定値は NULL です。 ワイルドカード パターン マッチングはサポートされていません。 table_ownerが指定されていない場合は、基になるデータベース管理システム (DBMS) の既定のテーブル表示規則が適用されます。

指定した名前のテーブルを現在のユーザーが所有している場合は、そのテーブルの列が返されます。 table_ownerが指定されておらず、現在のユーザーが指定したtable_nameを持つテーブルを所有していない場合、sp_column特権は、データベース所有者が所有する指定したtable_nameを持つテーブルを検索します。 存在する場合は、そのテーブルの列が返されます。

[ @table_qualifier= ] 'table_qualifier'
テーブル修飾子の名前を指定します。 table_qualifiersysname で、既定値は NULL です。 さまざまな DBMS 製品では、テーブルの 3 部構成の名前付け (修飾子) がサポートされています。所有者name)。 SQL Serverでは、この列はデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。

[ @column_name= ] 'column'
カタログ情報の 1 つの列のみが取得される場合に使用される 1 つの列です。 columnnvarchar(384)で、既定値は NULL です。 column が指定されていない場合は、すべての列が返されます。 SQL Serverでは、column は sys.columns テーブルに記載されている列名を表します。 には、基になる 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) 使用可能な列のアクセス許可の 1 つ。 列のアクセス許可には、次のいずれかの値を指定できます (または、実装が定義されている場合にデータ ソースでサポートされるその他の値)。

SELECT。GRANTEE は、列からデータを取得できます。

INSERT。GRANTEE は、テーブルに新しい行を挿入したときにこの列のデータを設定できます。

UPDATE。GRANTEE は、列内の既存のデータを修正できます。

REFERENCES。GRANTEE は、主キー/外部キーのリレーションシップで外部テーブル内の列を参照できます。 主キーと外部キーのリレーションシップは、テーブル制約を使用して定義されます。
IS_GRANTABLE varchar(3) GRANTEE が他のユーザーにアクセス許可を付与できるかどうかを示します (多くの場合、"grant with grant" アクセス許可と呼ばれます)。 YES、NO、または NULL を指定できます。 不明な値または NULL の場合は、"許可の許可" が適用されないデータ ソースであることを示します。

解説

SQL Serverでは、GRANT ステートメントを使用してアクセス許可が付与され、REVOKE ステートメントによって削除されます。

アクセス許可

スキーマに対する SELECT アクセス許可が必要です。

次の例では、特定の列の列特権情報を返します。

USE AdventureWorks2022;  
GO  
EXEC sp_column_privileges @table_name = 'Employee'   
    ,@table_owner = 'HumanResources'  
    ,@table_qualifier = 'AdventureWorks2022'  
    ,@column_name = 'SalariedFlag';  

参照

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