sp_column_privileges (Transact-SQL)

返回当前环境中单个表的列特权信息。

主题链接图标 Transact-SQL 语法约定

语法

sp_column_privileges [ @table_name = ] 'table_name' 
     [ , [ @table_owner = ] 'table_owner' ] 
     [ , [ @table_qualifier = ] 'table_qualifier' ] 
     [ , [ @column_name = ] 'column' ]

参数

  • [ @table\_name= ] 'table_name'
    用来返回目录信息的表。 table_name 的数据类型为 sysname,无默认值。 不支持通配符模式匹配。

  • [ @table\_owner= ] 'table_owner'
    用于返回目录信息的表的所有者。 table_owner 的数据类型为 sysname,默认值为 NULL。 不支持通配符模式匹配。 如果未指定 table_owner,则应用基础数据库管理系统 (DBMS) 默认的表可见性规则。

    如果当前用户拥有具有指定名称的表,则返回该表的列。 如果未指定 table_owner,并且当前用户没有具有指定 table_name 的表,则 sp_column privileges 将查找由数据库所有者拥有且具有指定 table_name 的表。 如果有,则返回该表的列。

  • [ @table\_qualifier= ] 'table_qualifier'
    表限定符的名称。 table_qualifier 的数据类型为 sysname,默认值为 NULL。 许多 DBMS 产品都支持表的三部分构成命名方式 (qualifier**.owner.**name)。 在 SQL Server 中,此列表示数据库名称。 在某些产品中,此列表示表所在的数据库环境的服务器名称。

  • [ @column\_name= ] 'column'
    只获取一列目录信息时所用的单独的列。 column 的数据类型为 nvarchar(384),默认值为 NULL。 如果未指定 column,则返回所有列。 在 SQL Server 中,column 表示在 sys.columns 表中列出的列名。 column 可包含使用基础 DBMS 的通配符匹配模式的通配符。 为了达到最佳的互操作性,网关客户端应只采用 ISO 标准模式匹配(% 和 _ 通配符)。

结果集

sp_column_privileges 等效于 ODBC 中的 SQLColumnPrivileges。 返回的结果按 TABLE_QUALIFIER、TABLE_OWNER、TABLE_NAME、COLUMN_NAME 和 PRIVILEGE 排序。

列名

数据类型

说明

TABLE_QUALIFIER

sysname

表限定符名称。 该字段可以为 NULL。

TABLE_OWNER

sysname

表所有者名称。 此字段始终返回值。

TABLE_NAME

sysname

表名。 此字段始终返回值。

COLUMN_NAME

sysname

返回的 TABLE_NAME 中的每一列的列名。 此字段始终返回值。

GRANTOR

sysname

向列出的 GRANTEE 授予对此 COLUMN_NAME 的权限的数据库用户名。 在 SQL Server 中,此列始终与 TABLE_OWNER 相同。 此字段始终返回值。

GRANTOR 列可能是数据库所有者 (TABLE_OWNER),或由数据库所有者使用 GRANT 语句中的 WITH GRANT OPTION 子句授予权限的用户。

GRANTEE

sysname

已被列出的 GRANTOR 授予对此 COLUMN_NAME 的权限的数据库用户名。 在 SQL Server 中,此列始终包括来自 sysusers 表的数据库用户。 此字段始终返回值。

PRIVILEGE

varchar(32)

可用列权限中的一个。 列权限可以是下列值中的一个(或定义实现时数据源支持的其他值):

SELECT = GRANTEE 可以检索列的数据。

INSERT = 当 GRANTEE 向表中插入新行时,GRANTEE 可以为此列提供数据。

UPDATE = GRANTEE 可以修改列中的现有数据。

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

IS_GRANTABLE

varchar(3)

指示是否允许 GRANTEE 向其他用户授权(通常称为“再授权”权限)。 可以是 YES、NO 或 NULL。 未知值或 NULL 值表示不能使用“授予再授予”(grant with grant) 的数据源。

注释

使用 SQL Server,可以用 GRANT 语句授予权限,用 REVOKE 语句除去权限。

权限

需要对架构的 SELECT 权限。

示例

以下示例返回特定列的列特权信息。

USE AdventureWorks2012;
GO
EXEC sp_column_privileges @table_name = 'Employee' 
    ,@table_owner = 'HumanResources'
    ,@table_qualifier = 'AdventureWorks2012'
    ,@column_name = 'SalariedFlag';

请参阅

参考

GRANT (Transact-SQL)

REVOKE (Transact-SQL)

系统存储过程 (Transact-SQL)