sp_table_privileges (Transact-SQL)

傳回一或多份指定資料表的資料表權限清單 (如 INSERT、DELETE、UPDATE、SELECT、REFERENCES)。

主題連結圖示 Transact-SQL 語法慣例

語法

sp_table_privileges [ @table_name = ] 'table_name'   
     [ , [ @table_owner = ] 'table_owner' ] 
     [ , [ @table_qualifier = ] 'table_qualifier' ] 
     [ , [ @fUsePattern = ] 'fUsePattern' ]

引數

  • [ @table\_name= ] 'table_name'
    這是用來傳回目錄資訊的資料表。 table_name 是 nvarchar(384),沒有預設值。 支援萬用字元的模式比對。

  • [ @table\_owner= ] 'table_owner'
    這是用來傳回目錄資訊之資料表的資料表擁有者。 table_owner是 nvarchar(384),預設值是 NULL。 支援萬用字元的模式比對。 如果未指定擁有者,就會套用基礎 DBMS 的預設資料表可見性規則。

    如果目前使用者擁有一份含指定名稱的資料表,就會傳回該資料表的資料行。 如果未指定 owner,且目前使用者並未擁有指定 name 的資料表,這個程序就會查看資料庫擁有者所擁有之指定 table_name 的資料表。 如果資料表存在,就會傳回這份資料表的資料行。

  • [ @table\_qualifier= ] 'table_qualifier'
    這是資料表限定詞的名稱。 table_qualifier 是 sysname,預設值是 NULL。 各種 DBMS 產品都支援三部分的資料表命名 (qualifier.owner.name)。 在 SQL Server 中,這個資料行代表資料庫名稱。 在某些產品中,它代表資料表之資料庫環境的伺服器名稱。

  • [ @fUsePattern= ] 'fUsePattern'
    判斷是否將底線 (_)、百分比 (%) 和方括號 ([ 或 ]) 字元解譯成萬用字元。 有效值是 0 (關閉模式比對) 和 1 (開啟模式比對)。 fUsePattern 是 bit,預設值是 1。

傳回碼值

結果集

資料行名稱

資料類型

說明

TABLE_QUALIFIER

sysname

資料表限定詞名稱。 在 SQL Server 中,這個資料行代表資料庫名稱。 這個欄位可以是 NULL。

TABLE_OWNER

sysname

資料表擁有者名稱。 這個欄位一律會傳回值。

TABLE_NAME

sysname

資料表名稱。 這個欄位一律會傳回值。

GRANTOR

sysname

已將這份 TABLE_NAME 的權限授與列出之 GRANTEE 的資料庫使用者名稱。 在 SQL Server 中,這個資料行永遠與 TABLE_OWNER 相同。 這個欄位一律會傳回值。 另外,GRANTOR 資料行也可能是資料庫擁有者 (TABLE_OWNER),或資料庫擁有者利用 GRANT 陳述式中之 WITH GRANT OPTION 子句來授與權限的使用者。

GRANTEE

sysname

已由列出的 GRANTOR 授與這份 TABLE_NAME 的權限的資料庫使用者名稱。 在 SQL Server 中,這個資料行一律包括 sys.database_principals 系統檢視表中的資料庫使用者。 這個欄位一律會傳回值。

PRIVILEGE

sysname

可用的資料表權限之一。 資料表權限可以是下列值之一 (或定義實作時,資料來源所支援的其他值):

SELECT = GRANTEE 可以擷取一個或多個資料行的資料。

INSERT = GRANTEE 可以提供一個或多個資料行的新資料列資料。

UPDATE = GRANTEE 可以修改一個或多個資料行的現有資料。

DELETE = GRANTEE 可以移除資料表中的資料列。

REFERENCES = GRANTEE 可以在主索引鍵/外部索引鍵關聯性中,參考外部資料表中的資料行。 在 SQL Server 中,主索引鍵/外部索引鍵關聯性是利用資料表條件約束來定義的。

特定資料表權限提供給 GRANTEE 的動作範圍會隨著資料來源而不同。 例如,UPDATE 權限可能會允許 GRANTEE 更新一項資料來源中某份資料表的所有資料行,但只更新另一項資料來源中 GRANTOR 有 UPDATE 權限的資料行。

IS_GRANTABLE

sysname

指出是否允許 GRANTEE 將權限授與其他使用者 (通常稱為 "grant with grant" 權限)。 它可以是 YES、NO 或 NULL。 未知 (或 NULL) 值是指不適用 "grant with grant" 的資料來源。

備註

sp_table_privileges 預存程序相當於 ODBC 中的 SQLTablePrivileges。 傳回的結果依 TABLE_QUALIFIER、TABLE_OWNER、TABLE_NAME 和 PRIVILEGE 來排序。

權限

需要結構描述的 SELECT 權限。

範例

下列範例會傳回名稱開頭為 Contact 一字的所有資料表之權限資訊。

USE AdventureWorks2012;
GO
EXEC sp_table_privileges 
   @table_name = 'Contact%';

請參閱

參考

目錄預存程序 (Transact-SQL)

系統預存程序 (Transact-SQL)