适用于: SQL Server
Azure SQL 数据库
Azure SQL 托管实例
返回当前环境中单个表的列特权信息。
语法
sp_column_privileges
[ @table_name = ] N'table_name'
[ , [ @table_owner = ] N'table_owner' ]
[ , [ @table_qualifier = ] N'table_qualifier' ]
[ , [ @column_name = ] N'column_name' ]
[ ; ]
参数
[ @table_name = ] N'table_name'
用于返回目录信息的表。 @table_name 为 sysname,没有默认值。 不支持通配符模式匹配。
[ @table_owner = ] N'table_owner'
用于返回目录信息的表的所有者。 @table_owner为 sysname,默认值为 NULL. 不支持通配符模式匹配。 如果未 指定@table_owner ,则应用基础数据库管理系统(DBMS)的默认表可见性规则。
如果当前用户拥有具有指定名称的表,则返回该表的列。 如果未 指定@table_owner ,并且当前用户不拥有具有指定 @table_name的表, sp_column 则特权将查找具有数据库所有者拥有的指定 @table_name 的表。 如果有,则返回该表的列。
[ @table_qualifier = ] N'table_qualifier'
表限定符的名称。 @table_qualifier为 sysname,默认值为 NULL. 各种 DBMS 产品支持表的三部分命名(<qualifier>.<owner>.<name>)。 在 SQL Server 中,此列表示数据库名称。 在某些产品中,该列表示表所在的数据库环境的服务器名。
[ @column_name = ] N'column_name'
仅获取一列目录信息时使用的单个列。 @column_name为 nvarchar(384),默认值为 NULL. 如果未 指定@column_name ,则返回所有列。 在 SQL Server 中, @column_name 表示表中列出的 sys.columns 列名。 @column_name可以使用基础 DBMS 的通配符匹配模式包含通配符。 为了获得最大的互操作性,网关客户端应只假定 ISO 标准模式匹配( % 通配符和 _ 通配符)。
结果集
sp_column_privileges 等效于 SQLColumnPrivileges ODBC。 返回的结果按 TABLE_QUALIFIER、、 COLUMN_NAMETABLE_OWNERTABLE_NAME和 。PRIVILEGE
| 列名称 | 数据类型 | 描述 |
|---|---|---|
TABLE_QUALIFIER |
sysname | 表限定符名称。 此字段可以是 NULL. |
TABLE_OWNER |
sysname | 表所有者名称。 此字段始终返回值。 |
TABLE_NAME |
sysname | 表名。 此字段始终返回值。 |
COLUMN_NAME |
sysname | 列名称,针对返回的每个 TABLE_NAME 列。 此字段始终返回值。 |
GRANTOR |
sysname | 已为此授予对 COLUMN_NAME 列出的 GRANTEE权限的数据库用户名。 在 SQL Server 中,此列始终与 TABLE_OWNER. 此字段始终返回值。该 GRANTOR 列可以是数据库所有者(TABLE_OWNER)或数据库所有者通过使用 WITH GRANT OPTION 语句中的 GRANT 子句向其授予权限的用户。 |
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值是指“授予授权”不适用的数据源。 |
注解
使用 SQL Server 时,通过语句授予 GRANT 权限,并由 REVOKE 该语句带走。
权限
需要对架构的 SELECT 权限。
示例
以下示例返回特定列的列特权信息。
USE AdventureWorks2022;
GO
EXECUTE sp_column_privileges
@table_name = 'Employee',
@table_owner = 'HumanResources',
@table_qualifier = 'AdventureWorks2022',
@column_name = 'SalariedFlag';