sp_table_privileges (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例
返回指定表或表的表权限列表(例如INSERT
,、DELETE
UPDATE
、REFERENCES
SELECT
)。
语法
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_OWNER
TABLE_NAME
和 PRIVILEGE
。
权限
需要对架构的 SELECT
权限。
示例
以下示例返回其名称以单词 Contact
开头的所有表的特权信息。
USE AdventureWorks2022;
GO
EXEC sp_table_privileges @table_name = 'Contact%';