分享方式:


sp_column_privileges (Transact-SQL)

適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體

傳回目前環境中單一數據表的數據行許可權資訊。

Transact-SQL 語法慣例

語法

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 產品支援數據表的三部分命名(<qualifier>.<owner>.<name>)。 在 SQL Server 中,此資料行代表資料庫名稱。 在某些產品中,它代表數據表資料庫環境的伺服器名稱。

[ @column_name = ] N'column_name'

當只取得一個目錄資訊數據行時,會使用單一數據行。 @column_name為 nvarchar(384),預設值為 NULL。 如果未 指定@column_name ,則會傳回所有數據行。 在 SQL Server 中, @column_name 代表數據表中 sys.columns 所列的數據行名稱。 @column_name可以使用基礎 DBMS 的通配符比對模式來包含通配符。 為了達到最大互操作性,網關客戶端應該只假設 ISO 標準模式比對 ( %_ 通配符)。

結果集

sp_column_privileges 相當於 SQLColumnPrivileges ODBC 中的 。 傳回的結果會依 TABLE_QUALIFIER、、 TABLE_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) 或資料庫擁有者在 WITH GRANT OPTION 語句中使用 GRANT 子句授與許可權的使用者。
GRANTEE sysname 列出的 GRANTOR授與此許可權COLUMN_NAME的資料庫用戶名稱。 在 SQL Server 中,此資料行一律包含數據表中的 sysusers 資料庫使用者。 此欄位一律會傳回值。
PRIVILEGE varchar(32) 其中一個可用的數據行許可權。 資料行權限可以是下列其中一個值(或定義實作時數據源所支援的其他值):

SELECT = GRANTEE 可以擷取數據行的數據。
INSERT = GRANTEE 當新的數據列插入資料表時, GRANTEE可以提供此數據行的數據。
UPDATE = GRANTEE 可以修改數據行中的現有數據。
REFERENCES = GRANTEE 可以在主鍵/外鍵關聯性中參考外表中的數據行。 主鍵/外鍵關聯性是使用數據表條件約束來定義。
IS_GRANTABLE varchar(3) 指出 是否 GRANTEE 允許將許可權授與其他使用者(通常稱為「授與授與」許可權)。 可以是 YESNONULL。 未知或 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';