SET Affermazioni (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di analisi (PDW)Endpoint di analisi SQL in Microsoft FabricMagazzino in Microsoft FabricDatabase 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).

Categoria Rendiconti
Istruzioni relative a data e ora SET DATEFIRST

SET DATEFORMAT
Istruzioni di blocco SET DEADLOCK_PRIORITY

SET LOCK_TIMEOUT
Istruzioni varie SET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMIT

SET FIPS_FLAGGER

SET IDENTITY_INSERT

SET LANGUAGE

SET OFFSETS

SET QUOTED_IDENTIFIER
Istruzioni per l'esecuzione di query SET ARITHABORT

SET ARITHIGNORE

SET FMTONLY
Nota: questa funzionalità verrà rimossa in una versione futura di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.

SET NOCOUNT

SET NOEXEC

SET NUMERIC_ROUNDABORT

SET PARSEONLY

SET QUERY_GOVERNOR_COST_LIMIT

SET CACHE DEI RISULTATI SET (Anteprima)
Nota: questa funzionalità si applica solo ad Azure Synapse Analytics.

SET ROWCOUNT

SET TEXTSIZE
Istruzioni per impostazioni ISO SET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ON

SET ANSI_NULLS

SET ANSI_PADDING

SET ANSI_WARNINGS
Istruzioni statistiche SET FORCEPLAN

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT

SET SHOWPLAN_XML

SET STATISTICS IO

SET STATISTICS XML

SET STATISTICS PROFILE

SET STATISTICS TIME
Istruzioni per transazioni SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVEL

SET XACT_ABORT

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 ON imposta 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