sp_column_privileges (Transact-SQL)
適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance
現在の環境の 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) の既定のテーブル表示規則が適用されます。
指定した名前のテーブルを現在のユーザーが所有している場合は、そのテーブルの列が返されます。 table_ownerが指定されておらず、現在のユーザーが指定したtable_nameを持つテーブルを所有していない場合、sp_column特権は、データベース所有者が所有する指定したtable_nameを持つテーブルを検索します。 存在する場合は、そのテーブルの列が返されます。
[ @table_qualifier= ] 'table_qualifier'
テーブル修飾子の名前を指定します。 table_qualifier は sysname で、既定値は NULL です。 さまざまな DBMS 製品では、テーブルの 3 部構成の名前付け (修飾子) がサポートされています。所有者。name)。 SQL Serverでは、この列はデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。
[ @column_name= ] 'column'
カタログ情報の 1 つの列のみが取得される場合に使用される 1 つの列です。 column は nvarchar(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)
フィードバック
https://aka.ms/ContentUserFeedback。
近日公開予定: 2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub イシューを段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、以下を参照してください:フィードバックの送信と表示