Condividi tramite


sp_setapprole (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure

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

Convenzioni relative alla sintassi Transact-SQL

Sintassi

sp_setapprole
    [ @rolename = ] N'rolename'
    , [ @password = ] N'password'
    [ , [ @encrypt = ] 'encrypt' ]
    [ , [ @fCreateCookie = ] fCreateCookie ]
    [ , [ @cookie = ] cookie OUTPUT ]
[ ; ]

Argomenti

[ @rolename = ] N'rolename'

Nome del ruolo applicazione definito nel database corrente. @rolename è sysname, senza impostazione predefinita. @rolename deve esistere nel database corrente.

[ @password = ] { encrypt N'password' }

Password necessaria per attivare il ruolo applicazione. @password è sysname, senza impostazione predefinita. @password può essere offuscato tramite la funzione ODBCencrypt. Quando si usa la encrypt funzione, la password deve essere convertita in una stringa Unicode inserendo N prima della prima virgoletta.

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

Importante

La funzione ODBC encrypt non fornisce la crittografia. Non è consigliabile basarsi su questa funzione per proteggere le password trasmesse in rete. Se queste informazioni verranno trasmesse attraverso una rete, usare TLS o IPSec.

[ @encrypt = ] { 'none' | 'odbc' }

Specifica il tipo di crittografia prima di inviare la password al motore di database di SQL Server. @encrypt è varchar(10)e può essere uno di questi valori.

valore Descrizione
none (predefinito) Specifica che non viene utilizzata alcuna offuscamento. La password viene passata a SQL Server come testo normale.
odbc Specifica che ODBC offusca la password usando la funzione ODBC encrypt prima di inviare la password al motore di database di SQL Server. Questo valore può essere specificato solo quando si usa un client ODBC o il provider OLE DB per SQL Server.

[ @fCreateCookie = ] { 'true' | 'false' }

Specifica se è necessario creare un cookie. @fCreateCookie è bit, con un valore predefinito .0

true viene convertito in modo implicito in 1. false viene convertito in modo implicito in 0.

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

Nota

Anche se l'implementazione corrente restituisce varbinary(50), le applicazioni devono riservare la variabile varbinary(8000)documentata, 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) e 1 (errore).

Osservazioni:

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 esegue sp_unsetapprole. Non è possibile usare sp_setapprole in un'altra stored procedure, attivare o all'interno di una transazione definita dall'utente. Può essere eseguito solo come istruzioni Transact-SQL dirette.

Per una panoramica dei ruoli applicazione, vedere Ruoli applicazione.

È consigliabile usare sempre una connessione crittografata quando si abilita un ruolo applicazione per proteggere la password del ruolo applicazione quando la si trasmette in rete.

L'opzione Microsoft ODBC encrypt non è supportata da SqlClient. Se è necessario archiviare credenziali, crittografarle con le funzioni CryptoAPI. Il parametro @password viene archiviato come hash unidirezionale. Per mantenere la compatibilità con le versioni precedenti di SQL Server, sp_addapprole non applica i criteri di complessità delle password. 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. Attivare un ruolo applicazione senza l'opzione crittografa

Nell'esempio seguente viene attivato un ruolo applicazione denominato SalesAppRole, con la password AsDeF00MbXXin testo normale , creata con autorizzazioni progettate per l'applicazione usata 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;

Il ruolo applicazione è ora attivo. USER_NAME() restituisce il nome del ruolo applicazione, Sales11.

SELECT USER_NAME();

Annullare l'impostazione del ruolo applicazione.

EXEC sys.sp_unsetapprole @cookie;
GO

Il ruolo applicazione non è più attivo. Il contesto originale viene ripristinato. USER_NAME() restituisce il nome dell'utente originale.

SELECT USER_NAME();
GO