sp_setapprole (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

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

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

@rolename [ = ] N'nomedafunção'

O nome da função de aplicativo definida no banco de dados atual. @rolename é sysname, sem padrão. @rolename deve existir no banco de dados atual.

@password [ = ] { criptografar N'senha' }

A senha necessária para ativar a função do aplicativo. @password é sysname, sem padrão. @password pode ser ofuscado usando a função ODBCencrypt. Quando você usa a encrypt função, a senha deve ser convertida em uma cadeia de caracteres Unicode colocando N antes das primeiras aspas.

A opção de criptografia não tem suporte em conexões que usam SqlClient.

Importante

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

@encrypt [ = ] { 'nenhum' | 'ODBC' }

Especifica o tipo de criptografia antes de enviar a senha para o Mecanismo de Banco de Dados do SQL Server. @encrypt é varchar(10) e pode ser um desses valores.

Valor Descrição
none (padrão) Especifica que nenhuma ofuscação é usada. A senha é passada para o SQL Server como texto sem formatação.
odbc Especifica que o ODBC ofusca a senha usando a função ODBC encrypt antes de enviar a senha para o Mecanismo de Banco de Dados do SQL Server. Esse valor pode ser especificado somente quando você estiver usando um cliente ODBC ou o provedor OLE DB para SQL Server.

@fCreateCookie [ = ] { 'verdadeiro' | 'falso' }

Especifica se um cookie deve ser criado. @fCreateCookie é bit, com um padrão de 0.

true é implicitamente convertido em 1. false é implicitamente convertido em 0.

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

Observação

Embora a implementação atual retorne varbinary(50), os aplicativos devem reservar o varbinary(8000) documentado, para que o aplicativo continue a operar corretamente se o tamanho de retorno do cookie aumentar em uma versão futura.

Valores do código de retorno

0 (sucesso) e 1 (fracasso).

Comentários

Depois que uma função de aplicativo é ativada usando sp_setapproleo , a função permanece ativa até que o usuário se desconecte do servidor ou execute sp_unsetapproleo . Você não pode usar sp_setapprole dentro de outro procedimento armazenado, gatilho ou dentro de uma transação definida pelo usuário. Ele só pode ser executado como instruções Transact-SQL diretas.

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

Você deve sempre usar uma conexão criptografada ao habilitar uma função de aplicativo, para proteger a senha da função de aplicativo ao transmiti-la por uma rede.

A opção ODBC encrypt da Microsoft não é suportada pelo 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, sp_addapprole não impõe a diretiva de complexidade de senha. Para impor a diretiva de complexidade de senha, use CREATE APPLICATION ROLE.

Permissões

Requer associação em público e conhecimento da senha para a função.

Exemplos

R. Ativar uma função de aplicativo sem a opção criptografar

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

EXEC sys.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 sys.sp_setapprole 'Sales11',
    'fdsd896#gfdbfdkjgh700mM',
    @fCreateCookie = true,
    @cookie = @cookie OUTPUT;

A função de aplicativo agora está ativa. USER_NAME() Retorna o nome da função do aplicativo, Sales11.

SELECT USER_NAME();

Desdefina a função do aplicativo.

EXEC sys.sp_unsetapprole @cookie;
GO

A função de aplicativo não está mais ativa. O contexto original é restaurado. USER_NAME() Retorna o nome do usuário original.

SELECT USER_NAME();
GO