Partilhar via


sp_setapprole (Transact-SQL)

Ativa as permissões associadas a uma função de aplicativo no banco de dados atual.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

sp_setapprole [ @rolename = ] 'role',
    [ @password = ] { encrypt N'password' } 
      |
        'password' [ , [ @encrypt = ] { 'none' | 'odbc' } ]
        [ , [ @fCreateCookie = ] true | false ]
    [ , [ @cookie = ] @cookie OUTPUT ]

Argumentos

  • [ @rolename = ] 'role'
    É o nome da função de aplicativo definida no banco de dados atual. role é sysname, sem nenhum padrão. role deve existir no banco de dados atual.

  • [ @password = ] { encrypt N'password' }
    É a senha necessária para ativar a função de aplicativo. password é sysname, sem nenhum padrão. password pode ser ofuscado usando a função encrypt ODBC. Ao usar a função encrypt, a senha deve ser convertida em uma cadeia de caracteres Unicode colocando N antes da primeira aspa simples.

    A opção encrypt não tem suporte nas conexões que usam SqlClient.

    Observação importanteImportante

    A função encrypt ODBC não fornece recursos de criptografia. Você não deve confiar nessa função para proteger senhas que são transmitidas pela rede. Se essas informações forem transmitidas por uma rede, use SSL ou IPSec.

  • @encrypt = 'none'
    Especifica que nenhuma ofuscação deve ser usada. A senha é transmitida para o SQL Server como texto sem formatação. Esse é o padrão.

  • @encrypt= 'odbc'
    Especifica que o ODBC será ofuscado pela senha usando a função encrypt ODBC antes de enviar a senha para o Mecanismo de Banco de Dados do SQL Server. Isso pode ser especificado somente quando um cliente ODBC ou o provedor OLE DB para SQL Server for utilizado.

  • [ @fCreateCookie = ] true | false
    Especifica se um cookie deve ser criado. true é convertido implicitamente em 1. false é convertido implicitamente em 0.

  • [ @cookie = ] @cookie OUTPUT
    Especifica um parâmetro de saída para conter o cookie. O cookie é gerado somente se o valor de @fCreateCookie é true. varbinary(8000)

Valores de código de retorno

0 (êxito) e 1 (falha)

Comentários

Após uma função de aplicativo ser ativada com o uso de sp_setapprole, a função permanece ativa até o usuário se desconectar do servidor ou executar sp_unsetapprole. sp_setapprole pode ser executado somente por instruções Transact-SQL diretas. sp_setapprole não pode ser executado em outro procedimento armazenado ou em uma transação definida pelo usuário.

Para obter uma visão geral das funções de aplicativo, consulte Funções de aplicativo.

Observação sobre segurançaObservação sobre segurança

Para proteger a senha da função de aplicativo quando transmitida por uma rede, use sempre uma conexão criptografada ao habilitar uma função de aplicativo.

O Microsoft ODBC tem a opção encrypt que não tem suporte em SqlClient. Se for necessário armazenar credenciais, criptografe-as com as funções da API de criptografia. O parâmetro password é armazenado como um hash unidirecional. Para preservar a compatibilidade com versões anteriores do SQL Server, a política de complexidade de senha não é imposta por sp_addapprole. Para impor a política de complexidade de senha, use CREATE APPLICATION ROLE.

Permissões

Requer associação em public e conhecimento da senha da função.

Exemplos

A. Ativando uma função de aplicativo sem a opção de criptografia

O exemplo a seguir ativa uma função de aplicativo SalesAppRole, com a senha de texto sem formatação AsDeF00MbXX, criada com permissões projetadas especificamente para o aplicativo usado pelo usuário atual.

EXEC sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO

O exemplo a seguir ativa a função de aplicativo Sales11 com a senha fdsd896#gfdbfdkjgh700mM e cria um cookie. O exemplo retorna o nome do usuário atual e, em seguida, reverte para o contexto original executando sp_unsetapprole.

DECLARE @cookie varbinary(8000);
EXEC sp_setapprole 'Sales11', 'fdsd896#gfdbfdkjgh700mM'
    , @fCreateCookie = true, @cookie = @cookie OUTPUT;
-- The application role is now active.
SELECT USER_NAME();
-- This will return the name of the application role, Sales11.
EXEC sp_unsetapprole @cookie;
-- The application role is no longer active.
-- The original context has now been restored.
GO
SELECT USER_NAME();
-- This will return the name of the original user. 
GO