sp_setapprole (Transact-SQL)

Si applica a: SQL Server Azure SQL Database

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

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 impostazione predefinita. role deve esistere nel database corrente.

[ @password = ] { encrypt N'password' } Password necessaria per attivare il ruolo applicazione. password è sysname, senza impostazione predefinita. la password può essere offuscata usando la funzione di crittografia ODBC. Quando si usa la funzione encrypt , la password deve essere convertita in una stringa Unicode inserendo N prima della prima virgoletta.

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

Importante

La funzione di crittografia ODBC non fornisce la crittografia. È consigliabile evitare l'utilizzo di questa funzione per proteggere le password trasmesse in rete. Se queste informazioni verranno trasmesse attraverso 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 offusca la password usando la funzione di crittografia ODBC prima di inviare la password al 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 creare 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 che contiene 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 la dimensione restituita dal cookie aumenta 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 Transact-SQL dirette, a livello ad hoc e non all'interno di un'altra stored procedure, trigger o all'interno di una transazione definita dall'utente.

Per una panoramica dei ruoli applicazione, vedere Ruoli applicazione.

Importante

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

Autorizzazioni

Richiede l'appartenenza al pubblico 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)