Condividi tramite


Istruzioni SET (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric

Il linguaggio di programmazione Transact-SQL offre varie istruzioni SET per la modifica della gestione delle informazioni specifiche della sessione corrente. Le istruzioni SET sono raggruppate in categorie, descritte nella tabella seguente.

Per informazioni sull'impostazione delle variabili locali mediante l'istruzione SET, vedere 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 RESULT SET CACHING (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 sull'utilizzo delle istruzioni SET

  • Tutte le istruzioni SET vengono eseguite in fase di esecuzione, tranne queste che vengono eseguite in fase di analisi:

    • SET FIPS_FLAGGER
    • SET OFFSETS
    • SET PARSEONLY
    • SET QUOTED_IDENTIFIER
  • Se un'istruzione SET viene eseguita in una stored procedure o in un trigger, il valore dell'opzione SET viene ripristinato quando la stored procedure o il trigger restituisce il controllo. Se si specifica un'istruzione SET in una stringa SQL dinamica eseguita con sp_executesql o EXECUTE, inoltre, il valore dell'opzione SET viene ripristinato quando il batch indicato nella stringa SQL dinamica restituisce il controllo.

  • Le stored procedure vengono eseguite con le impostazioni SET specificate in fase di esecuzione, ad eccezione di SET ANSI_NULLS e SET QUOTED_IDENTIFIER. Le stored procedure che specificano SET ANSI_NULLS o SET QUOTED_IDENTIFIER utilizzano l'impostazione specificata in fase di creazione della stored procedure. Se utilizzate all'interno di una stored procedure, le impostazioni SET vengono ignorate.

  • 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, inoltre, come un'istruzione SET esplicita, con la sola differenza che viene applicata al momento dell'accesso.

  • Le impostazioni di database impostate tramite ALTER DATABASE sono valide solo a livello di database e hanno effetto solo se impostate in modo esplicito. Le impostazioni di database prevalgono sulle impostazioni delle opzioni dell'istanza impostate tramite sp_configure.

  • Se un'istruzione SET usa ON e OFF, è possibile specificare una delle due impostazioni per più opzioni SET.

    Nota

    Questo non si applica alle opzioni SET correlate a statistiche.

    Ad esempio SET QUOTED_IDENTIFIER, ANSI_NULLS ON imposta sia QUOTED_IDENTIFIER che ANSI_NULLS su ON.

  • Le impostazioni delle istruzioni SET eseguono l'override delle identiche impostazioni delle opzioni di database configurate con ALTER DATABASE. Il valore specificato in un'istruzione SET ANSI_NULLS, ad esempio, prevarrà sull'impostazione di 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.

  • Le istruzioni ALTER, CREATE e DROP DATABASE non rispettano l'impostazione di SET LOCK_TIMEOUT.

  • Quando un'istruzione SET globale o di scelta rapida include diverse impostazioni, eseguendola vengono ripristinate le impostazioni precedenti per tutte le opzioni interessate. Se un'opzione SET interessata da un'istruzione SET di scelta rapida viene impostata dopo l'esecuzione di tale istruzione, la singola istruzione SET eseguirà l'override delle impostazioni corrispondenti dell'istruzione di scelta rapida. Un esempio di istruzione SET di scelta rapida è SET 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 MARS (Multiple Active Result Set) condividono uno stato globale che contiene le impostazioni delle opzioni SET della sessione più recente. Quando viene eseguita, ogni richiesta può modificare le opzioni SET. Le modifiche sono specifiche del contesto della richiesta in cui vengono impostate e non influiscono sulle altre richieste MARS simultanee. Al termine dell'esecuzione della richiesta, tuttavia, le nuove opzioni SET vengono copiate nello stato della sessione globale. Le nuove richieste che vengono eseguite nella stessa sessione dopo questa modifica utilizzeranno queste nuove impostazioni delle opzioni SET.

  • 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 si creano e si modificano gli indici in colonne calcolate o viste indicizzate, è necessario impostare queste opzioni SET su ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING e ANSI_WARNINGS. Impostare l'opzione NUMERIC_ROUNDABORT su OFF.

    Se una di queste opzioni non viene impostata sui valori obbligatori, le azioni INSERT, UPDATE, DELETE, DBCC CHECKDB e DBCC CHECKTABLE sulle viste indicizzate o sulle tabelle con indici su colonne calcolate avranno esito negativo. 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 l'istruzione SET RESULT_SET_CACHING è impostata su ON, la funzionalità di memorizzazione nella cache dei risultati per la sessione client corrente è abilitata. Non è possibile impostare RESULT_SET_CACHING su ON per una sessione se è impostata su OFF a livello del database. Quando l'istruzione SET RESULT_SET_CACHING è impostata su OFF, la funzionalità di memorizzazione nella cache dei set di risultati per la sessione client corrente è disabilitata. Per modificare questa impostazione è richiesta l'appartenenza al ruolo public. Si applica a: Azure Synapse Analytics Gen2