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


sp_helprotect (Transact-SQL)

Область применения: SQL Server

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

Внимание

sp_helprotect не возвращает сведения о защищаемых объектах, появившихся в SQL Server 2005 (9.x) и более поздних версиях. Вместо этого используйте sys.database_permissions и sys.fn_builtin_permissions .

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_helprotect
    [ [ @name = ] N'name' ]
    [ , [ @username = ] N'username' ]
    [ , [ @grantorname = ] N'grantorname' ]
    [ , [ @permissionarea = ] 'permissionarea' ]
[ ; ]

Аргументы

[ @name = ] N'name'

Имя объекта в текущей базе данных или оператор, это разрешения для отчета. @name — nvarchar(776) с значением по умолчаниюNULL, которое возвращает все разрешения объекта и инструкции. Если значение представляет объект (таблицы, представление, хранимая процедура или расширенная хранимая процедура), в текущей базе данных этот объект должен быть допустимым. Имя объекта может включать квалификатор владельца в форме <owner>.<object>.

Если @name является оператором, это может быть CREATE оператор.

[ @username = ] N'username'

Имя субъекта, для которого возвращаются разрешения. @username — sysname( значение по умолчаниюNULL), которое возвращает все субъекты в текущей базе данных. @username должны существовать в текущей базе данных.

[ @grantorname = ] N'grantorname'

Имя субъекта, которому предоставлены разрешения. @grantorname — sysname, с значением по умолчаниюNULL, которое возвращает все сведения о разрешениях, предоставленных любым субъектом в базе данных.

[ @permissionarea = ] 'permissionarea'

Символьная строка, указывающая, следует ли отображать разрешения объекта (символьная строка), разрешения оператора (символьная строкаos) или оба (o s). @permissionarea — varchar(10) с значением по умолчаниюo s. @permissionarea может быть любым сочетанием o или sбез запятых или пробелов между o иs.

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

0 (успешно) или 1 (сбой).

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

Имя столбца Тип данных Description
Owner sysname Имя владельца объекта.
Object sysname Имя объекта .
Grantee sysname Имя участника, которому были предоставлены разрешения.
Grantor sysname Имя участника, предоставившего разрешения.
ProtectType nvarchar(10) Имя типа защиты:

GRANT REVOKE
Action nvarchar(60) Имя разрешения. Инструкции с допустимыми разрешениями зависят от типа объекта.
Column sysname Тип разрешения:

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

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

Замечания

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

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

EXEC sp_helprotect NULL, NULL, dbo;

Or

EXEC sp_helprotect @grantorname = 'dbo';

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

Разрешения

Необходимо быть членом роли public.

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

Примеры

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

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

EXEC sp_helprotect 'titles';

B. Вывод списка разрешений для пользователя

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

EXEC sp_helprotect NULL, 'Judy';

C. Перечисление разрешений, предоставленных определенным пользователем

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

EXEC sp_helprotect NULL, NULL, 'Judy';

D. Вывод списка разрешений оператора только

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

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

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

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

EXEC sp_helprotect @name = 'CREATE TABLE';