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


sp_helprotect (Transact-SQL)

Возвращает отчет со сведениями о разрешениях пользователя на объект или инструкцию в текущей базе данных.

Важное примечаниеВажно!

Процедура sp_helprotect не возвращает сведений о защищаемых объектах, появившихся в SQL Server 2005. Используйте вместо нее представление каталога sys.database_permissions и функцию fn_builtin_permissions.

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

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

Синтаксис

sp_helprotect [ [ @name = ] 'object_statement' ] 
     [ , [ @username = ] 'security_account' ] 
     [ , [ @grantorname = ] 'grantor' ] 
     [ , [ @permissionarea = ] 'type' ]

Аргументы

  • [ @name = ] 'object_statement'
    Имя инструкции или объекта в текущей базе данных, разрешения на который выводятся в отчете. Аргумент object_statement имеет тип nvarchar(776) и значение по умолчанию NULL, при котором возвращаются разрешения на все объекты и инструкции. Если значение представляет объект (таблицы, представление, хранимая процедура или расширенная хранимая процедура), в текущей базе данных этот объект должен быть допустимым. Имя объекта может включать квалификатор владельца в форме owner**.**object.

    Если аргумент object_statement является инструкцией, это может быть инструкция CREATE.

  • [ @username = ] 'security_account'
    Имя участника, для которого возвращаются разрешения. Аргумент security_account имеет тип sysname и значение по умолчанию NULL, при котором возвращаются сведения обо всех участниках текущей базы данных. Участник с именем security_account должен существовать в текущей базе данных.

  • [ @grantorname = ] 'grantor'
    Имя участника, который предоставил разрешения. Аргумент grantor имеет тип sysname и значение по умолчанию NULL, когда возвращаются все сведения о разрешениях, выданных всеми участниками базы данных.

  • [ @permissionarea = ] 'type'
    Символьная строка, которая означает, будут ли отображены разрешения на объекты (символ o), инструкции (символ s) или на то и другое (o s). Аргумент type имеет тип varchar(10) и значение по умолчанию o s. Аргумент type может быть комбинацией символов o и s, разделенных запятой или пробелом.

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

0 (успешное завершение) или 1 (неудачное завершение)

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

Имя столбца

Тип данных

Описание

Владелец

sysname

Имя владельца объекта.

Объект

sysname

Имя объекта.

Grantee

sysname

Имя участника, которому были предоставлены разрешения.

Grantor

sysname

Имя участника, предоставившего разрешения.

ProtectType

nvarchar(10)

Имя типа защиты:

GRANT REVOKE

Действие

nvarchar(60)

Имя разрешения. Инструкции с допустимыми разрешениями зависят от типа объекта.

Столбец

sysname

Тип разрешения:

All = разрешение затрагивает все текущие столбцы объекта.

New = разрешение затрагивает все новые столбцы, которые могут быть изменены для объекта в будущем (с помощью инструкции ALTER).

All+New = сочетание All и New.

Возвращает точку, если тип разрешения не применяется к столбцам.

Замечания

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

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

EXEC sp_helprotect NULL, NULL, dbo

или

EXEC sp_helprotect @grantorname = 'dbo'

Данные в отчете сортируются по категории разрешения, владельцу, объекту, получателю разрешения, участнику, предоставившему разрешение, категории типа защиты, типу защиты, действию и столбцу идентификатора.

Разрешения

Требуется членство в роли public.

Полученные данные подлежат ограничениям на доступ к метаданным. Сущности, на которые участник не имеет разрешения, не показаны. Дополнительные сведения см. в разделе Настройка видимости метаданных.

Примеры

А. Список разрешений для таблицы

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

EXEC sp_helprotect 'titles';

Б. Список разрешений для пользователя

В следующем примере выводится список всех разрешений, которые пользователь Judy имеет в текущей базе данных.

EXEC sp_helprotect NULL, 'Judy';

В. Список разрешений, предоставленных указанным пользователем

В следующем примере выводится список всех разрешений, которые были предоставлены пользователем Judy в текущей базе данных, с использованием NULL в качестве заполнителей пропущенных параметров.

EXEC sp_helprotect NULL, NULL, 'Judy';

Г. Список разрешений только на инструкции

В следующем примере выводится список всех разрешений на инструкции в текущей базе данных с использованием NULL в качестве заполнителей пропущенных параметров.

EXEC sp_helprotect NULL, NULL, NULL, 's'; 

Д. Список разрешений для инструкции CREATE

В следующем примере приведен список всех пользователей, которым предоставлено разрешение CREATE TABLE.

EXEC sp_helprotect @name = 'CREATE TABLE';

См. также

Справочник

Хранимые процедуры безопасности (Transact-SQL)

DENY (Transact-SQL)

Инструкция GRANT (Transact-SQL)

REVOKE (Transact-SQL)

Системные хранимые процедуры (Transact-SQL)