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


sp_table_privileges (Transact-SQL)

Возвращает список разрешений (таких как INSERT, DELETE, UPDATE, SELECT, REFERENCES) для указанной таблицы или таблиц.

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

sp_table_privileges [ @table_name = ] 'table_name'   
     [ , [ @table_owner = ] 'table_owner' ] 
     [ , [ @table_qualifier = ] 'table_qualifier' ] 
     [ , [@fUsePattern =] 'fUsePattern']

Аргументы

  • [ @table_name = ] 'table_name'
    Таблица, в которую возвращаются сведения каталога. Аргумент table_name имеет тип nvarchar(384) и не имеет значения по умолчанию. Поиск совпадений по шаблону поддерживается.

  • [ @table_owner = ] 'table_owner'
    Владелец таблицы, в которую возвращаются сведения каталога. Аргумент table_owner имеет тип nvarchar(384) и значение по умолчанию NULL. Поиск совпадений по шаблону поддерживается. Если владелец таблицы не указан, применяются правила видимости таблиц в базовой СУБД по умолчанию.

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

  • [ @table_qualifier =] 'table_qualifier'
    Имя квалификатора таблицы. Аргумент table_qualifier имеет тип sysname и значение по умолчанию NULL. Некоторые СУБД поддерживают трехкомпонентные имена таблиц (qualifier.owner.name). В SQL Server этот столбец представляет имя базы данных. В некоторых СУБД он представляет имя сервера в среде базы данных, где находится таблица.

  • [ @fUsePattern =] 'fUsePattern'
    Определяет, следует ли рассматривать символы подчеркивания (_), процента (%) и квадратных скобок ([ или ]) как символы-шаблоны. Допустимые значения: 0 (сопоставление с шаблонами отключено) и 1 (сопоставление с шаблонами включено). Аргумент fUsePattern имеет тип bit и значение 1 по умолчанию.

Значения кодов возврата

Нет

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

Имя столбца

Тип данных

Описание

TABLE_QUALIFIER

sysname

Имя квалификатора таблицы. В SQL Server этот столбец представляет имя базы данных. Это поле может иметь значение NULL.

TABLE_OWNER

sysname

Имя владельца таблицы. Это поле всегда возвращает значение.

TABLE_NAME

sysname

Имя таблицы. Это поле всегда возвращает значение.

GRANTOR

sysname

Имя пользователя базы данных, предоставившего разрешения на таблицу TABLE_NAME указанному пользователю GRANTEE. В SQL Server этот столбец всегда совпадает со столбцом TABLE_OWNER. Это поле всегда возвращает значение. Столбец GRANTOR может соответствовать или владельцу базы данных (столбец TABLE_OWNER), или пользователю, которому владелец базы данных предоставил разрешение с помощью предложения WITH GRANT OPTION инструкции GRANT.

GRANTEE

sysname

Имя пользователя базы данных, которому предоставлены разрешения на таблицу TABLE_NAME указанным пользователем GRANTOR. В SQL Server этот столбец всегда включает имя пользователя базы данных из системного представления sys.database_principals . Это поле всегда возвращает значение.

PRIVILEGE

sysname

Одно из доступных разрешений на таблицу. Разрешения на таблицу могут быть одним из следующих значений (или другими значениями, поддерживаемыми источником данных, если определена реализация).

SELECT = GRANTEE — может получать данные для одного или нескольких столбцов.

INSERT = GRANTEE — может предоставлять данные для новых строк одного или нескольких столбцов.

UPDATE = GRANTEE — может изменять существующие данные для одного или нескольких столбцов.

DELETE = GRANTEE — может удалять строки из таблицы.

REFERENCES = GRANTEE — может ссылаться на столбец во внешней таблице в связи «первичный ключ — внешний ключ». В SQL Server связи «первичный ключ — внешний ключ» определяются с ограничениями таблицы.

Диапазон операций, предоставляемых пользователю GRANTEE конкретными правами доступа к таблице, зависит от источника данных. Например, права доступа UPDATE могут разрешить пользователю GRANTEE обновлять все столбцы таблицы при работе с одним источником данных, и только те столбцы, для которых пользователь GRANTOR имеет разрешение UPDATE, при работе с другим источником данных.

IS_GRANTABLE

sysname

Указывает, может ли пользователь GRANTEE предоставлять разрешения другим пользователям (так называемые разрешения «с правом передачи»). Может иметь значение YES, NO или NULL. Неизвестное значение (или NULL) свидетельствует о том, что понятие «право передачи» к источнику данных неприменимо.

Замечания

Хранимая процедура sp_table_privileges эквивалентна функции ODBC SQLTablePrivileges. Возвращенные результаты упорядочиваются по столбцам TABLE_QUALIFIER, TABLE_OWNER, TABLE_NAME и PRIVILEGE.

Разрешения

Необходимо разрешение SELECT для схемы.

Примеры

Следующий код возвращает сведения о правах доступа, связанных со всеми таблицами, имена которых начинаются на Contact.

USE AdventureWorks;
GO
EXEC sp_table_privileges 
   @table_name = 'Contact%';