Partilhar via


sp_setapprole (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseBase 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.

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

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