sp_column_privileges (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance
現在の環境の 1 つのテーブルの列特権情報を返します。
構文
sp_column_privileges
[ @table_name = ] N'table_name'
[ , [ @table_owner = ] N'table_owner' ]
[ , [ @table_qualifier = ] N'table_qualifier' ]
[ , [ @column_name = ] N'column_name' ]
[ ; ]
引数
[ @table_name = ] N'table_name'
カタログ情報を返すために使用されるテーブル。 @table_name は sysname で、既定値はありません。 ワイルドカード パターン マッチングはサポートされていません。
[ @table_owner = ] N'table_owner'
カタログ情報を返すために使用されるテーブルの所有者。 @table_owner は sysname で、既定値は NULL
です。 ワイルドカード パターン マッチングはサポートされていません。 @table_ownerが指定されていない場合は、基になるデータベース管理システム (DBMS) の既定のテーブル可視性ルールが適用されます。
指定した名前のテーブルを現在のユーザーが所有している場合は、そのテーブルの列が返されます。 @table_ownerが指定されておらず、現在のユーザーが指定した@table_nameを持つテーブルを所有していない場合、sp_column
権限は、データベース所有者が所有する指定した@table_nameを持つテーブルを検索します。 存在する場合は、そのテーブルの列が返されます。
[ @table_qualifier = ] N'table_qualifier'
テーブル修飾子の名前。 @table_qualifier は sysname で、既定値は NULL
です。 さまざまな DBMS 製品では、テーブルの 3 部構成の名前付け (<qualifier>.<owner>.<name>
) がサポートされています。 SQL Server では、この列はデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。
[ @column_name = ] N'column_name'
カタログ情報の列が 1 つだけ取得されている場合に使用される 1 つの列。 @column_name は nvarchar(384) で、既定値は NULL
です。 @column_nameが指定されていない場合は、すべての列が返されます。 SQL Server では、 @column_name は、 sys.columns
テーブルに記載されている列名を表します。 @column_name は、基になる 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 | リストされているGRANTEE に対するこのCOLUMN_NAME に対するアクセス許可が付与されたデータベース ユーザー名。 SQL Server では、この列は常に TABLE_OWNER と同じです。 このフィールドには常に値が返されます。GRANTOR 列には、GRANT ステートメントの WITH GRANT OPTION 句を使用して、データベース所有者 (TABLE_OWNER ) またはデータベース所有者が権限を付与したユーザーを指定できます。 |
GRANTEE |
sysname | 一覧に示されているGRANTOR によって、このCOLUMN_NAME に対するアクセス許可が付与されたデータベース ユーザー名。 SQL Server では、この列には常に sysusers テーブルのデータベース ユーザーが含まれます。 このフィールドには常に値が返されます。 |
PRIVILEGE |
varchar(32) | 使用可能な列のアクセス許可の 1 つ。 列のアクセス許可には、次のいずれかの値を指定できます (または、実装が定義されている場合、データ ソースでサポートされるその他の値)。SELECT = GRANTEE では、列のデータを取得できます。INSERT = GRANTEE では、( GRANTEE によって) 新しい行がテーブルに挿入されるときに、この列のデータを提供できます。UPDATE = GRANTEE では、列内の既存のデータを変更できます。REFERENCES = GRANTEE では、主キー/外部キーリレーションシップの外部テーブル内の列を参照できます。 主キーと外部キーのリレーションシップは、テーブル制約を使用して定義されます。 |
IS_GRANTABLE |
varchar(3) | GRANTEE が他のユーザーにアクセス許可を付与できるかどうかを示します (多くの場合、"grant with grant" アクセス許可と呼ばれます)。 YES 、NO 、または NULL を指定できます。 不明な値 ( NULL ) は、"grant with grant" が適用されないデータ ソースを参照します。 |
解説
SQL Server では、 GRANT
ステートメントでアクセス許可が付与され、 REVOKE
ステートメントによって削除されます。
アクセス許可
スキーマに対する SELECT
アクセス許可が必要です。
例
次の例では、特定の列の列特権情報を返します。
USE AdventureWorks2022;
GO
EXEC sp_column_privileges
@table_name = 'Employee',
@table_owner = 'HumanResources',
@table_qualifier = 'AdventureWorks2022',
@column_name = 'SalariedFlag';