适用于: SQL Server
Azure SQL 数据库
Azure SQL 托管实例
返回指定表或表的表权限列表(例如INSERT,、DELETEUPDATE、REFERENCESSELECT)。
语法
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_name 为 nvarchar(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 允许向其他用户授予权限(通常称为“授予授予”权限)。 可以是 YES、NO 或 NULL。 未知(或 NULL)值是指“授予授予”不适用的数据源。 |
注解
sp_table_privileges存储过程等效于 SQLTablePrivileges ODBC。 返回的结果按 TABLE_QUALIFIER,TABLE_OWNERTABLE_NAME和 PRIVILEGE。
权限
需要对架构的 SELECT 权限。
示例
以下示例返回其名称以单词 Contact 开头的所有表的特权信息。
USE AdventureWorks2022;
GO
EXECUTE sp_table_privileges @table_name = 'Contact%';