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


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 AdventureWorks2008R2;
GO
EXEC sp_table_privileges 
   @table_name = 'Contact%';