sp_table_privileges (Transact-SQL)
返回指定的一个或多个表的表权限(如 INSERT、DELETE、UPDATE、SELECT、REFERENCES)的列表。
语法
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 |
已向所列的 GRANTEE 授予了对该 TABLE_NAME 的权限的数据库用户名。在 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)值是指不适用“再授权”的数据源。 |
注释
sp_table_privileges 存储过程与 ODBC 中的 SQLTablePrivileges 等同。返回结果按 TABLE_QUALIFIER、TABLE_OWNER、TABLE_NAME 和 PRIVILEGE 顺序排列。
权限
要求对架构具有 SELECT 权限。
示例
以下示例返回其名称以单词 Contact 开头的所有表的特权信息。
USE AdventureWorks;
GO
EXEC sp_table_privileges
@table_name = 'Contact%';