sp_column_privileges (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure 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特权查找具有数据库所有者拥有的指定 table_name 的表。 如果有,则返回该表的列。
[ @table_qualifier= ] “table_qualifier”
表限定符的名称。 table_qualifier 为 sysname,默认值为 NULL。 多种 DBMS 产品支持表的三部分命名方式 (qualifier.owner.name)。 在 SQL Server 中,此列表示数据库名称。 在某些产品中,该列表示表所在的数据库环境的服务器名。
[ @column_name= ] 'column'
只获取一列目录信息时所用的单独的列。 列 为 nvarchar(384),默认值为 NULL。 如果未指定 column,则返回所有列。 在 SQL Server 中, 列 表示 sys.columns 表中所列的列名。 列 可以使用基础 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 值是指“授予授予”不适用的数据源。 |
注解
使用 SQL Server 时,会向 GRANT 语句授予权限,并被 REVOKE 语句带走。
权限
需要对架构的 SELECT 权限。
示例
以下示例返回特定列的列特权信息。
USE AdventureWorks2022;
GO
EXEC sp_column_privileges @table_name = 'Employee'
,@table_owner = 'HumanResources'
,@table_qualifier = 'AdventureWorks2022'
,@column_name = 'SalariedFlag';
另请参阅
GRANT (Transact-SQL)
REVOKE (Transact-SQL)
系统存储过程 (Transact-SQL)
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈