sp_setapprole (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure

Attiva le autorizzazioni associate a un ruolo applicazione nel database corrente.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

[ @rolename = ] 'role' Nome del ruolo applicazione definito nel database corrente. role è sysname, senza alcun valore predefinito. il ruolo deve esistere nel database corrente.

[ @password = ] { encrypt N'password' } Password necessaria per attivare il ruolo applicazione. password è sysname, senza alcun valore predefinito. la password può essere offuscata tramite la funzione ODBC encrypt. Quando si usa la funzione encrypt, la password deve essere convertita in una stringa Unicode inserendo N prima delle prime virgolette.

L'opzione encrypt non è supportata nelle connessioni che usano SqlClient.

Importante

La funzione ODBC encrypt non fornisce la crittografia. È consigliabile evitare l'utilizzo di questa funzione per proteggere le password trasmesse in rete. Se queste informazioni verranno trasmesse in una rete, usare TLS o IPSec.

@encrypt = 'none'
Indica che non è richiesto l'utilizzo di tecniche di offuscamento. La password viene passata a SQL Server come testo normale. Questo è il valore predefinito.

@encrypt= 'odbc'
Specifica che ODBC offuserà la password usando la funzione ODBC encrypt prima di inviare la password a Motore di database di SQL Server . È possibile specificare questa opzione solo se si utilizza un client ODBC o il provider OLE DB per SQL Server.

[ @fCreateCookie = ] true | false Specifica se deve essere creato un cookie. true viene convertito in modo implicito in 1. false viene convertito in modo implicito in 0.

[ @cookie = ] @cookie OUTPUT Specifica un parametro di output per contenere il cookie. Il cookie viene generato solo se il valore di @ fCreateCookie è true. varbinary(8000)

Nota

Il parametro OUTPUT del cookie per sp_setapprole è attualmente documentato come varbinary(8000) che rappresenta la lunghezza massima corretta. Tuttavia, l'implementazione corrente restituisce varbinary(50) . Le applicazioni devono continuare a riservare varbinary(8000) in modo che l'applicazione continui a funzionare correttamente se le dimensioni restituite dal cookie aumentano in una versione futura.

Valori del codice restituito

0 (esito positivo) o 1 (esito negativo)

Commenti

Dopo l'attivazione di un ruolo applicazione tramite sp_setapprole, il ruolo rimane attivo fino a quando l'utente non si disconnette dal server o non esegue sp_unsetapprole. sp_setapprole può essere eseguito solo da istruzioni dirette, a livello ad hoc e non all'interno di un altro stored procedure, trigger o all'interno di una Transact-SQL transazione definita dall'utente.

Per una panoramica dei ruoli applicazione, vedere Ruoli applicazione.

Importante

Per proteggere la password del ruolo applicazione quando viene trasmessa in rete, è consigliabile usare sempre una connessione crittografata quando si abilita un ruolo applicazione. Microsoft L'opzione ODBC encrypt non è supportata da SqlClient. Se è necessario archiviare credenziali, crittografarle con le funzioni CryptoAPI. La password del parametro viene archiviata come hash unidiredato. Per mantenere la compatibilità con le versioni precedenti di , i criteri di complessità delle password non vengono SQL Server applicati da sp_addapprole. Per applicare i criteri di complessità delle password, usare CREATE APPLICATION ROLE.

Autorizzazioni

Richiede l'appartenenza a public e la conoscenza della password per il ruolo.

Esempi

R. Attivazione di un ruolo applicazione senza l'opzione encrypt

Nell'esempio seguente viene attivato il ruolo applicazione SalesAppRole con la password non crittografata AsDeF00MbXX, creato con autorizzazioni specifiche per l'applicazione utilizzata dall'utente corrente.

EXEC sys.sp_setapprole 'SalesApprole', 'AsDeF00MbXX';  
GO

Nell'esempio seguente viene attivato il ruolo applicazione Sales11 con la password fdsd896#gfdbfdkjgh700mM e viene creato un cookie. Nell'esempio viene restituito il nome dell'utente corrente e quindi viene ripristinato il contesto originale tramite l'esecuzione di sp_unsetapprole.

DECLARE @cookie varbinary(8000);  
EXEC sys.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 sys.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

Vedere anche

Stored procedure di sistema (Transact-SQL)
Stored procedure di sicurezza (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)
DROP APPLICATION ROLE (Transact-SQL)
sp_unsetapprole (Transact-SQL)