sp_table_privileges (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

返回指定表或表的表权限列表(例如INSERT,、DELETEUPDATEREFERENCESSELECT)。

Transact-SQL 语法约定

语法

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

[ @table_name = ] N'table_name'

用于返回目录信息的表。 @table_namenvarchar(384),没有默认值。 支持通配符模式匹配。

[ @table_owner = ] N'table_owner'

用于返回目录信息的表的表所有者。 @table_owner为 nvarchar(384),默认值为 NULL. 支持通配符模式匹配。 如果未指定所有者,则应用基础 DBMS 的默认表可见性规则。

如果当前用户拥有一个具有指定名称的表,则返回该表的列。 如果未 指定所有者 ,并且当前用户没有具有指定 名称的表,则此过程将查找具有数据库所有者拥有的指定 table_name 的表。 如果存在这样的表,则返回该表的列。

[ @table_qualifier = ] N'table_qualifier'

表限定符的名称。 @table_qualifier为 sysname,默认值为 NULL. 多种 DBMS 产品支持表的三部分命名方式 (qualifier.owner.name)。 在 SQL Server 中,此列表示数据库名称。 在某些产品中,该列表示表所在的数据库环境的服务器名。

[ @fUsePattern = ] fUsePattern

确定下划线()、百分比(_%)和方括号([])字符是否解释为野生字符卡字符。 有效值为 0 (模式匹配已关闭),并且 1 (模式匹配处于打开状态)。 @fUsePattern,默认值为 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)或数据库所有者通过使用 WITH GRANT OPTION 语句中的 GRANT 子句向其授予权限的用户。
GRANTEE sysname 已由列出的GRANTOR数据库用户名授予对此TABLE_NAME权限。 在 SQL Server 中,此列始终包含视图中的数据库用户 sys.database_principalssystem 。 此字段始终返回值。
PRIVILEGE sysname 可用的表权限之一。 表权限可以是下列值之一(或在定义实现时数据源所支持的其他值):

SELECT = GRANTEE 可以检索一个或多个列的数据。

INSERT = GRANTEE 可以为一个或多个列提供新行的数据。

UPDATE = GRANTEE 可以修改一个或多个列的现有数据。

DELETE = GRANTEE 可以从表中删除行。

REFERENCES = GRANTEE 可以在主键/外键关系中引用外表中的列。 在 SQL Server 中,主键/外键关系是使用表约束定义的。

给定表特权授予 GRANTEE 的操作范围取决于数据源。 例如,UPDATE该特权可能允许更新一个数据源上表中的所有列,并且只允许GRANTEE对另一个数据源具有UPDATE特权的那些列GRANTOR
IS_GRANTABLE sysname 指示是否 GRANTEE 允许向其他用户授予权限(通常称为“授予授予”权限)。 可以是 YESNONULL。 未知(或 NULL)值是指“授予授予”不适用的数据源。

注解

sp_table_privileges存储过程等效于 SQLTablePrivileges ODBC。 返回的结果按 TABLE_QUALIFIERTABLE_OWNERTABLE_NAMEPRIVILEGE

权限

需要对架构的 SELECT 权限。

示例

以下示例返回其名称以单词 Contact 开头的所有表的特权信息。

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