Condividi tramite


sp_setapprole (Transact-SQL)

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 è di tipo sysname e non prevede alcun valore predefinito. role deve esistere nel database corrente.

  • [ @password = ] { encrypt N'password' }
    Password richiesta per attivare il ruolo applicazione. password è di tipo sysname e non prevede alcun valore predefinito. È possibile nascondere 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
    Specifica se è necessario creare un cookie. Il valore true viene convertito in 1 in modo implicito, mentre false viene convertito in 0, sempre in modo implicito.

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

    [!NOTA]

    Il parametro OUTPUT del cookie per sp_setapprole è disponibile attualmente come varbinary(8000) che è la lunghezza massima corretta. Tuttavia, dall'implementazione corrente viene restituito varbinary(50). Le applicazioni devono continuare a riservare varbinary(8000) in modo siano in grado di funzionare correttamente se le dimensioni restituite del cookie aumentano in una versione successiva.

Valori di codice 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. sp_setapprole può essere eseguita solo da istruzioni Transact-SQL dirette. sp_setapprole non può essere eseguita all'interno di un'altra stored procedure o di una transazione definita dall'utente.

Per una panoramica dei ruoli applicazione, vedere Ruoli applicazione.

Nota sulla sicurezzaNota sulla sicurezza

È consigliabile utilizzare sempre una connessione crittografata quando si abilita 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 

Vedere anche

Riferimento

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)