sp_setapprole (Transact-SQL)
Aplica-se a: SQL Server Banco 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'nome da funçã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 [ = ] { encrypt N'senha' }
A senha necessária para ativar a função de aplicativo. @password é sysname, sem padrão. @password podem ser ofuscados 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.
Não há suporte para a opção encrypt 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 transmitidas por uma rede. Se essas informações forem transmitidas por 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 só pode ser especificado 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
.
@cookie [ = ] cookie SAÍDA
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 do 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_setapprole
o , a função permanece ativa até que o usuário se desconecte do servidor ou execute sp_unsetapprole
. Você não pode usar sp_setapprole
em outro procedimento armazenado, gatilho ou em 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 de aplicativo, consulte Funções de aplicativo.
Você sempre deve 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 é compatível com 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
o não impõe a política de complexidade de senha. Para impor a política 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 de criptografia
O exemplo a seguir ativa uma função de aplicativo chamada SalesAppRole
, com a senha AsDeF00MbXX
de texto sem formatação , criada com permissões projetadas para o aplicativo usado pelo usuário atual.
EXEC sys.sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO
B. Ativar uma função de aplicativo com um cookie e, em seguida, reverter para o contexto original
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 de aplicativo, Sales11
.
SELECT USER_NAME();
Remova a definição da 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