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


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 DATABASE

    • CREATE DEFAULT

    • CREATE FUNCTION

    • CREATE PROCEDURE

    • CREATE RULE

    • CREATE TABLE

    • CREATE VIEW

    • BACKUP DATABASE

    • BACKUP LOG

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

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

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

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

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

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

Имя столбца

Тип данных

Описание

Owner

sysname

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

Object

sysname

Имя объекта.

Grantee

sysname

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

Grantor

sysname

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

ProtectType

nvarchar(10)

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

GRANT REVOKE

Action

nvarchar(20)

Имя разрешения:

  • REFERENCES

  • SELECT

  • INSERT

  • DELETE

  • UPDATE

  • CREATE TABLE

  • CREATE DATABASE

  • CREATE FUNCTION

  • CREATE RULE

  • CREATE VIEW

  • CREATE PROCEDURE

  • EXECUTE

  • BACKUP DATABASE

  • CREATE DEFAULT

  • BACKUP LOG

Column

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'