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


sp_setapprole (Transact-SQL)

Область применения: SQL Server База данных SQL Azure

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

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

Синтаксис

sp_setapprole
    [ @rolename = ] N'rolename'
    , [ @password = ] N'password'
    [ , [ @encrypt = ] 'encrypt' ]
    [ , [ @fCreateCookie = ] fCreateCookie ]
    [ , [ @cookie = ] cookie OUTPUT ]
[ ; ]

Аргументы

[ @rolename = ] N'rolename'

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

[ @password = ] { encrypt N'password' }

Пароль, необходимый для активации роли приложения. @password — sysname без значения по умолчанию. @password можно скрыть с помощью функции ODBCencrypt. При использовании encrypt функции пароль необходимо преобразовать в строку Юникода, поместив N перед первой кавычки.

Параметр шифрования не поддерживается для подключений, использующих SqlClient.

Внимание

Функция ODBC encrypt не предоставляет шифрование. Эту функцию не следует полагаться на защиту паролей, передаваемых по сети. Если эти сведения будут передаваться по сети, используйте TLS или IPSec.

[ @encrypt = ] { 'none' | 'odbc' }

Указывает тип шифрования перед отправкой пароля в ядро СУБД SQL Server. @encrypt — varchar(10) и может быть одним из этих значений.

значение Описание
none (по умолчанию) Указывает, что не используется обфускация. Пароль передается в SQL Server в виде обычного текста.
odbc Указывает, что ODBC скрывает пароль с помощью функции ODBC encrypt перед отправкой пароля в ядро СУБД SQL Server. Это значение можно указать только при использовании клиента ODBC или поставщика OLE DB для SQL Server.

[ @fCreateCookie = ] { 'true' | 'false' }

Указывает, должен ли создаваться куки-файл. @fCreateCookie бит с значением по умолчанию0.

true неявно преобразуется в 1. false неявно преобразуется в 0.

Указывает выходной параметр, содержащий куки-файл. @cookie — это параметр OUTPUT типа varbinary(8000). Файл cookie создается только в том случае, если значение @fCreateCookietrue.

Примечание.

Хотя текущая реализация возвращает varbinary(50),приложения должны зарезервировать документированные varbinary(8000),чтобы приложение продолжало работать правильно, если размер возвращаемого файла cookie увеличивается в будущем выпуске.

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

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

Замечания

После активации роли приложения с помощью sp_setapproleроли роль остается активной до тех пор, пока пользователь не отключается от сервера или не выполняется sp_unsetapprole. Нельзя использовать sp_setapprole в другой хранимой процедуре, триггере или внутри определяемой пользователем транзакции. Его можно выполнять только как прямые инструкции Transact-SQL.

Общие сведения о ролях приложений см. в разделе "Роли приложения".

При включении роли приложения всегда следует использовать зашифрованное подключение для защиты пароля роли приложения при передаче его по сети.

Параметр Microsoft ODBC encrypt не поддерживается SqlClient. Если необходимо сохранить учетные данные, зашифруйте их с помощью функций API. Параметр @password хранится как односторонняя хэш. Чтобы сохранить совместимость с более ранними версиями SQL Server, sp_addapprole политика сложности паролей не применяется. Чтобы применить политику сложности паролей, используйте CREATE APPLICATION ROLE.

Разрешения

Требуется членство в общедоступной среде и знании пароля для роли.

Примеры

А. Активация роли приложения без параметра шифрования

В следующем примере активируется роль приложения с именем SalesAppRole(с паролем AsDeF00MbXXобычного текста), созданной с разрешениями, предназначенными для приложения, используемого текущим пользователем.

EXEC sys.sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO

В следующем примере включается роль приложения Sales11 с паролем fdsd896#gfdbfdkjgh700mM и создается куки-файл. В примере возвращается имя текущего пользователя, после чего происходит возврат к исходному контексту с помощью выполнения процедуры sp_unsetapprole.

DECLARE @cookie VARBINARY(8000);

EXEC sys.sp_setapprole 'Sales11',
    'fdsd896#gfdbfdkjgh700mM',
    @fCreateCookie = true,
    @cookie = @cookie OUTPUT;

Роль приложения активна. USER_NAME()возвращает имя роли приложения. Sales11

SELECT USER_NAME();

Не укажете роль приложения.

EXEC sys.sp_unsetapprole @cookie;
GO

Роль приложения больше не активна. Исходный контекст восстанавливается. USER_NAME() возвращает имя исходного пользователя.

SELECT USER_NAME();
GO