Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Piattaforma di analisi (PDW)
Endpoint di analisi SQL in Microsoft Fabric
Magazzino in Microsoft Fabric
Database SQL in Microsoft Fabric
Il linguaggio di programmazione Transact-SQL fornisce diverse SET istruzioni che modificano la gestione corrente delle specifiche informazioni della sessione. Le SET affermazioni sono raggruppate nelle categorie mostrate nella tabella seguente.
Per informazioni sull'impostazione delle variabili locali con l'istruzione SET , vedi SET @local_variable (Transact-SQL).
Considerazioni quando si utilizzano le SET affermazioni
Tutte SET le istruzioni vengono eseguite o eseguite in tempo di esecuzione, eccetto queste, che vengono eseguite in tempo di analisi:
- SET FIPS_FLAGGER
- SET OFFSETS
- SET PARSEONLY
- e SET QUOTED_IDENTIFIER
Se una SET istruzione viene eseguita in una stored procedure o in un trigger, il valore dell'opzione SET viene ripristinato dopo che la stored procedure o il trigger restituisce il controllo. Inoltre, se specifichi un'istruzione SET in una stringa SQL dinamica che viene eseguita usando sp_executesql o EXECUTE, il valore dell'opzione SET viene ripristinato dopo che il controllo viene restituito dal batch specificato nella stringa SQL dinamica.
Le stored procedure vengono eseguite con le SET impostazioni specificate al tempo di esecuzione eccetto eSET QUOTED_IDENTIFIERSETSET ANSI_NULLSSET. Le stored procedure specificano SETSET ANSI_NULLS o SETSET QUOTED_IDENTIFIER utilizzano l'impostazione specificata al momento della creazione della stored procedure. Se usata all'interno di una procedura memorizzata, qualsiasi SET impostazione viene ignorata.
L'impostazione user options di sp_configure consente di specificare opzioni a livello di server e ha effetto su più database. Questa impostazione si comporta anche come un'affermazione esplicita SET , tranne che si verifica al momento dell'accesso.
Le impostazioni del database impostate da usa ALTER DATABASE sono valide solo a livello di database e entrano in vigore solo se esplicitamente impostate. Le impostazioni di database prevalgono sulle impostazioni delle opzioni dell'istanza impostate tramite sp_configure.
Se un'istruzione SET usa ON e OFF, puoi specificare una delle due per più SET opzioni.
Nota
Questo non si applica alle opzioni legate SET alla statistica.
Ad esempio,
SET QUOTED_IDENTIFIER, ANSI_NULLS ONimposta entrambi QUOTED_IDENTIFIER e ANSI_NULLS a ON.SET Le impostazioni delle istruzioni sovrascrivono le opzioni database identiche impostate usando ALTER DATABASE. Ad esempio, il valore specificato in un'istruzione SET ANSI_NULLS sovrascriverà l'impostazione del database per ANSI_NULLs. Alcune impostazioni di connessione, inoltre, vengono impostate automaticamente su ON quando un utente si connette a un database in base ai valori applicati con il precedente uso dell'impostazione user options di sp_configure o ai valori applicati a tutte le connessioni ODBC e OLE/DB.
ALTER, CREATE e DROP DATABASE le dichiarazioni non rispettano l'ambientazione SETSET LOCK_TIMEOUT .
Quando un'istruzione globale o scorciatoia SET imposta diverse impostazioni, emettere l'istruzione scorciatoia SET resetta le impostazioni precedenti per tutte le opzioni che l'istruzione SET scorciatoia interessa. Se un'opzione SET che viene influenzata da un'istruzione scorciatoia SET viene impostata dopo che l'istruzione scorciatoia SET è stata rilasciata, la singola SET istruzione sovrascrive le impostazioni di scorciatoia comparabili. Un esempio di istruzione scorciatoia SET sarebbe SETSET ANSI_DEFAULTS.
Quando si usano batch, il contesto di database è determinato dal batch stabilito con l'istruzione USE. Le query non pianificate e tutte le altre istruzioni all'esterno della stored procedure e incluse in batch ereditano le impostazioni delle opzioni del database e della connessione stabilite con l'istruzione USE.
Le richieste di Multiple Active Result Set (MARS) condividono uno stato globale che contiene le impostazioni più recenti delle opzioni di sessione SET . Quando ogni richiesta viene eseguita, può modificare le SET opzioni. Le modifiche sono specifiche del contesto della richiesta in cui vengono impostate e non influiscono sulle altre richieste MARS simultanee. Tuttavia, dopo il completamento dell'esecuzione della richiesta, le nuove SET opzioni vengono copiate nello stato globale della sessione. Le nuove richieste che vengono eseguite nella stessa sessione dopo questa modifica utilizzeranno queste nuove SET impostazioni di opzione.
Una stored procedure eseguita da un batch o da un'altra stored procedure viene eseguita in base ai valori delle opzioni configurati nel database contenente la stored procedure. Se la stored procedure db1.dbo.sp1 chiama la stored procedure db2.dbo.sp2, ad esempio, la stored procedure sp1 viene eseguita con l'impostazione corrente del livello di compatibilità del database db1 e la stored procedure sp2 viene eseguita con l'impostazione corrente del livello di compatibilità del database db2.
Quando un'istruzione Transact-SQL riguarda oggetti che si trovano in più database, a tale istruzione si applicano il contesto del database e il contesto della connessione correnti. In questo caso, se l'istruzione Transact-SQL si trova in un batch, il contesto della connessione corrente è il database definito dall'istruzione USE. Se l'istruzione Transact-SQL si trova in una stored procedure, il contesto della connessione è il database che contiene la stored procedure.
Quando crei e manipoli indici su colonne calcolate o viste indicizzate, devi impostare queste SET opzioni su ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING, e ANSI_WARNINGS. Imposta l'opzione NUMERIC_ROUNDABORT su OFF.
Se non imposti nessuna di queste opzioni ai valori richiesti, INSERT, UPDATE, DELETE, DBCC CHECKDB e DBCC CHECKTABLE le azioni su viste indicizzate o tabelle con indici su colonne calcolate falliranno. SQL Server genererà un avviso contenente tutte le opzioni impostate in modo errato. SQL Server elaborerà inoltre le istruzioni SELECT su tali tabelle o viste indicizzate come se gli indici sulle colonne calcolate o sulle viste non esistessero.
Quando SET RESULT_SET_CACHING è ATTIVO, attiva la funzione di cache dei risultati per la sessione client corrente. Non è possibile impostare RESULT_SET_CACHING su ON per una sessione se è impostata su OFF a livello del database. Quando SET RESULT_SET_CACHING è DISATTIVATA, la funzione di cache del set di risultati viene disabilitata per la sessione client corrente. Per modificare questa impostazione è richiesta l'appartenenza al ruolo public. Si applica a: Azure Synapse Analytics Gen2