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)