Condividi tramite


sp_setapprole (Transact-SQL)

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

Icona di collegamento a un argomentoConvenzioni 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 è di tipo sysname e non prevede alcun valore predefinito. role deve essere un ruolo esistente nel database corrente.

  • [ @password = ] { encrypt N'password' }
    Password necessaria per l'attivazione del ruolo applicazione. password è di tipo sysname e non prevede alcun valore predefinito. È possibile offuscare password tramite la funzione ODBC encrypt. Se si utilizza la funzione encrypt, è necessario convertire la password in una stringa Unicode aggiungendo N prima della virgoletta iniziale.

    L'opzione encrypt non è supportata per le connessioni che utilizzano SqlClient.

    Nota importanteImportante

    La funzione ODBC encrypt non offre funzionalità di crittografia. È consigliabile evitare l'utilizzo di questa funzione per proteggere le password trasmesse in rete. Per informazioni da trasmettere in rete, utilizzare i protocolli SSL o IPSec.

  • @encrypt = 'none'
    Indica che non è richiesto l'utilizzo di tecniche di offuscamento. La password viene passata a SQL Server come testo normale. Questa è l'impostazione predefinita.

  • @encrypt= 'odbc'
    Specifica che ODBC eseguirà l'offuscamento della password tramite la funzione ODBC encrypt prima di inviarla 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
    Indica se verrà 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 il cookie. Il cookie viene generato solo se il valore di @fCreateCookie è true. È di tipo varbinary(8000).

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

Dopo l'attivazione di un ruolo applicazione con sp_setapprole, tale ruolo rimane attivo fino alla disconnessione dell'utente o all'esecuzione di sp_unsetapprole. È possibile eseguire sp_setapprole solo tramite istruzioni Transact-SQL dirette. Non è possibile eseguire sp_setapprole all'interno di un'altra stored procedure o in una transazione definita dall'utente.

Per una panoramica dei ruoli applicazione, vedere Ruoli applicazione.

Nota sulla protezioneNota sulla protezione

È consigliabile utilizzare sempre una connessione crittografata quando si attiva un ruolo applicazione ed è necessario proteggere la password del ruolo applicazione per la trasmissione in rete.

L'opzione Microsoft ODBC encrypt non è supportata da SqlClient. Se è necessario archiviare credenziali, crittografarle con le funzioni CryptoAPI. Il valore del parametro password viene archiviato come hash unidirezionale. Per mantenere la compatibilità con le versioni precedenti di SQL Server, per la stored procedure sp_addapprole non vengono applicati i criteri di complessità delle password. Per applicare i criteri di complessità delle password, utilizzare CREATE APPLICATION ROLE.

Autorizzazioni

È richiesta l'appartenenza al ruolo public ed è necessario conoscere la password per il ruolo.

Esempi

A. 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 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 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 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