Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Base de dados SQL no Microsoft Fabric
Ativa as permissões associadas a uma função de aplicativo no banco de dados atual.
Transact-SQL convenções de sintaxe
Sintaxe
sp_setapprole
[ @rolename = ] N'rolename'
, [ @password = ] N'password'
[ , [ @encrypt = ] 'encrypt' ]
[ , [ @fCreateCookie = ] fCreateCookie ]
[ , [ @cookie = ] cookie OUTPUT ]
[ ; ]
Argumentos
@rolename [ = ] N'rolename'
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 [ = ] { encriptar N'password' }
A senha necessária para ativar a função do aplicativo.
@password é sysname, sem padrão.
@password pode ser ofuscado usando a função ODBC encrypt . 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 encrypt não é suportada em conexões que usam SqlClient.
Importante
A função ODBC encrypt não fornece criptografia. Não deve confiar nesta função para proteger palavras-passe transmitidas através de uma rede. Se estas informações forem transmitidas através de uma rede, utilize 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.
@cookie [ = ] saída de cookie
Especifica um parâmetro de saída para conter o cookie.
@cookie é um parâmetro OUTPUT do tipo varbinary(8000). O cookie é gerado apenas se o valor de @fCreateCookie for true.
Observação
Embora a implementação atual retorne varbinary(50), os aplicativos devem reservar o documentado varbinary(8000), para que o aplicativo continue a operar corretamente se o tamanho do retorno do cookie aumentar em uma versão futura.
Valores de código de retorno
0 (sucesso) e 1 (fracasso).
Observações
Depois que uma função de aplicativo é ativada usando sp_setapprole, 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 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ê sempre deve usar uma conexão criptografada ao habilitar uma função de aplicativo, para proteger a senha da função de aplicativo quando você a transmite por uma rede.
A opção Microsoft ODBC encrypt não é suportada pelo SqlClient. Se você precisar 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 política de complexidade de senha. Para impor a política de complexidade de senha, use CREATE APPLICATION ROLE.
Permissões
Requer associação ao público e conhecimento da senha para a função.
Exemplos
Um. Ativar uma função de aplicativo sem a opção de criptografia
O exemplo a seguir ativa uma função de aplicativo chamada SalesAppRole, criada com permissões projetadas para o aplicativo usado pelo usuário atual. Substitua <password> por uma senha forte.
EXECUTE sys.sp_setapprole 'SalesApprole', '<password>';
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 Sales11 aplicativo e cria um cookie. O exemplo retorna o nome do usuário atual e, em seguida, reverte para o contexto original executando sp_unsetapprole. Substitua <password> por uma senha forte.
DECLARE @cookie AS VARBINARY (8000);
EXECUTE sys.sp_setapprole
'Sales11',
'<password>',
@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.
EXECUTE 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