Поделиться через


sp_column_privileges (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Возвращает сведения о правах доступа к столбцам для одной таблицы текущего окружения.

Соглашения о синтаксисе Transact-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 не задано, применяются правила видимости таблиц по умолчанию базовой системы управления базами данных (СУБД).

Если текущему пользователю принадлежит таблица с указанным именем, возвращаются столбцы этой таблицы. Если @table_owner не указан, а текущий пользователь не владеет таблицей с указанным @table_name, sp_column привилегии ищут таблицу с указанным @table_name владельцем базы данных. Если такая таблица существует, возвращаются ее столбцы.

[ @table_qualifier = ] N'table_qualifier'

Имя квалификатора таблицы. @table_qualifier имеет имя sysname с значением по умолчаниюNULL. Различные продукты СУБД поддерживают трехкомпонентное именование таблиц (<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 могут включать подстановочные знаки с помощью шаблонов сопоставления подстановочных знаков базовой СУБД. Для максимальной совместимости клиент шлюза должен предполагать сопоставление только стандартных шаблонов ISO ( % символов и _ подстановочных знаков).

Результирующий набор

sp_column_privileges эквивалентен SQLColumnPrivileges в ODBC. Возвращаемые результаты упорядочены по TABLE_QUALIFIER, TABLE_OWNER, TABLE_NAMEи COLUMN_NAMEPRIVILEGE.

Имя столбца Тип данных Description
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 Имя пользователя базы данных, которое было предоставлено разрешения на это COLUMN_NAME перечисленным GRANTOR. В 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';