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'
Символьная строка, указывающая, следует ли отображать разрешения объекта (символьная строка), разрешения оператора (символьная строкаo
s
) или оба (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';