sp_helprotect (Transact-SQL)

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

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

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

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

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Cинтаксические обозначения в 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 с запятыми или пробелами между 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)