Transact-SQL 参考

sp_table_privileges

为指定表返回表权限(如 INSERT、DELETE、UPDATE、SELECT、REFERENCES)的列表。

语法

sp_table_privileges [ @table_name_pattern = ] 'table_name_pattern'
    
[ , [ @table_owner_pattern = ] 'table_owner_pattern' ]
    [ , [ @table_qualifier = ] 'table_qualifier' ]

参数

[@table_name =] 'table_name'

用来返回目录信息的表。table_name_pattern 的数据类型为 nvarchar(384),没有默认值。支持通配符模式匹配。

[@table_owner_pattern =] 'table_owner_pattern'

用来返回目录信息的表的所有者。table_owner_pattern 的数据类型为 nvarchar(384),默认值为 NULL。支持通配符模式匹配。如果没有指定 owner,则采用基础 DBMS 默认的表可视性规则。

在 Microsoft® SQL Server™ 中,如果当前用户拥有的表具有指定名称,则返回该表的列。如果没有指定 owner,且当前用户未拥有具有指定 name 的表,该程序将寻找数据库所有者拥有的具有指定 table_name_pattern 的表。如果有,则返回该表的列。

[@table_qualifier =] 'table_qualifier'

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

返回代码值

结果集
列名 数据类型 描述
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 中,该列总是包括来自 sysusers 表的数据库用户。该字段始终返回值。
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_QUALIFIERTABLE_OWNERTABLE_NAME PRIVILEGE 顺序排列。

权限

执行权限默认授予 public 角色。

示例

下例返回所有这样的表的特权信息:表名以单词 sales 开头,由所有者名称以 janet 开头的用户拥有,来自名称以 LONDON 开头的所有服务器。

USE master
EXEC sp_table_privileges 'LONDON%', 'janet%', 'sales%'

请参见

系统存储过程