sp_setapprole (Transact-SQL)
Si applica a: SQL Server (tutte le versioni supportate)
database SQL di Azure
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 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
B. Attivazione di un ruolo applicazione con un cookie e ripristino del contesto originale
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)