Istruzioni SET (Transact-SQL)SET Statements (Transact-SQL)

SI APPLICA A: sìSQL Server noDatabase SQL di Azure sìAzure SQL Data Warehouse noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database yesAzure SQL Data Warehouse noParallel Data Warehouse

Il linguaggio di programmazione Transact-SQLTransact-SQL offre varie istruzioni SET per la modifica della gestione delle informazioni specifiche della sessione corrente.The Transact-SQLTransact-SQL programming language provides several SET statements that change the current session handling of specific information. Le istruzioni SET sono raggruppate in categorie, descritte nella tabella seguente.The SET statements are grouped into the categories shown in the following table.

Per informazioni sull'impostazione delle variabili locali mediante l'istruzione SET, vedere SET @local_variable (Transact-SQL).For information about setting local variables with the SET statement, see SET @local_variable (Transact-SQL).

CategoryCategory IstruzioniStatements
Istruzioni relative a data e oraDate and time statements SET DATEFIRSTSET DATEFIRST

SET DATEFORMATSET DATEFORMAT
Istruzioni di bloccoLocking statements SET DEADLOCK_PRIORITYSET DEADLOCK_PRIORITY

SET LOCK_TIMEOUTSET LOCK_TIMEOUT
Istruzioni varieMiscellaneous statements SET CONCAT_NULL_YIELDS_NULLSET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMITSET CURSOR_CLOSE_ON_COMMIT

SET FIPS_FLAGGERSET FIPS_FLAGGER

SET IDENTITY_INSERTSET IDENTITY_INSERT

SET LANGUAGESET LANGUAGE

SET OFFSETSSET OFFSETS

SET QUOTED_IDENTIFIERSET QUOTED_IDENTIFIER
Istruzioni per l'esecuzione di queryQuery Execution Statements SET ARITHABORTSET ARITHABORT

SET ARITHIGNORESET ARITHIGNORE

SET FMTONLYSET FMTONLY
Nota: Questa funzionalità è in manutenzione e potrebbe essere rimossa in una delle prossime versioni di Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.Note: Questa funzionalità è in manutenzione e potrebbe essere rimossa in una delle prossime versioni di Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

SET NOCOUNTSET NOCOUNT

SET NOEXECSET NOEXEC

SET NUMERIC_ROUNDABORTSET NUMERIC_ROUNDABORT

SET PARSEONLYSET PARSEONLY

SET QUERY_GOVERNOR_COST_LIMITSET QUERY_GOVERNOR_COST_LIMIT

SET RESULT SET CACHING (anteprima)SET RESULT SET CACHING (Preview)
Nota: questa funzionalità si applica solo ad Azure SQL Data Warehouse.Note: This feature applies to Azure SQL Data Warehouse only.

SET ROWCOUNTSET ROWCOUNT

SET TEXTSIZESET TEXTSIZE
Istruzioni per impostazioni ISOISO Settings statements SET ANSI_DEFAULTSSET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFFSET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ONSET ANSI_NULL_DFLT_ON

SET ANSI_NULLSSET ANSI_NULLS

SET ANSI_PADDINGSET ANSI_PADDING

SET ANSI_WARNINGSSET ANSI_WARNINGS
Istruzioni statisticheStatistics statements SET FORCEPLANSET FORCEPLAN

SET SHOWPLAN_ALLSET SHOWPLAN_ALL

SET SHOWPLAN_TEXTSET SHOWPLAN_TEXT

SET SHOWPLAN_XMLSET SHOWPLAN_XML

SET STATISTICS IOSET STATISTICS IO

SET STATISTICS XMLSET STATISTICS XML

SET STATISTICS PROFILESET STATISTICS PROFILE

SET STATISTICS TIMESET STATISTICS TIME
Istruzioni per transazioniTransactions statements SET IMPLICIT_TRANSACTIONSSET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONSSET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVELSET TRANSACTION ISOLATION LEVEL

SET XACT_ABORTSET XACT_ABORT

Considerazioni sull'utilizzo delle istruzioni SETConsiderations When You Use the SET Statements

  • Tutte le istruzioni SET vengono eseguite in fase di esecuzione, tranne queste che vengono eseguite in fase di analisi:All SET statements run at execute or run time, except these statements, which run at parse time:

    • SET FIPS_FLAGGERSET FIPS_FLAGGER
    • SET OFFSETSSET OFFSETS
    • SET PARSEONLYSET PARSEONLY
    • SET QUOTED_IDENTIFIERand 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.If a SET statement runs in a stored procedure or trigger, the value of the SET option gets restored after the stored procedure or trigger returns control. 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.Also, if you specify a SET statement in a dynamic SQL string that runs by using either sp_executesql or EXECUTE, the value of the SET option gets restored after control returns from the batch that you specified in the dynamic SQL string.

  • Le stored procedure vengono eseguite con le impostazioni SET specificate in fase di esecuzione, ad eccezione di SET ANSI_NULLS e SET QUOTED_IDENTIFIER.Stored procedures execute with the SET settings specified at execute time except for SET ANSI_NULLS and 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.Stored procedures specifying SET ANSI_NULLS or SET QUOTED_IDENTIFIER use the setting specified at stored procedure creation time. Se utilizzate all'interno di una stored procedure, le impostazioni SET vengono ignorate.If used inside a stored procedure, any SET setting is ignored.

  • L'impostazione user options di sp_configure consente di specificare opzioni a livello di server e ha effetto su più database.The user options setting of sp_configure allows for server-wide settings and works across multiple databases. Questa impostazione si comporta, inoltre, come un'istruzione SET esplicita, con la sola differenza che viene applicata al momento dell'accesso.This setting also behaves like an explicit SET statement, except that it occurs at login time.

  • Le impostazioni di database impostate tramite ALTER DATABASE sono valide solo a livello di database e hanno effetto solo se impostate in modo esplicito.Database settings set by using ALTER DATABASE are valid only at the database level and take effect only if explicitly set. Le impostazioni di database prevalgono sulle impostazioni delle opzioni dell'istanza impostate tramite sp_configure.Database settings override instance option settings that are set by using sp_configure.

  • Se un'istruzione SET usa ON e OFF, è possibile specificare una delle due impostazioni per più opzioni SET.If a SET statement uses ON and OFF, you can specify either one for multiple SET options.

    Nota

    Questo non si applica alle opzioni SET correlate a statistiche.This doesn't apply to the statistics related SET options.

    Ad esempio SET QUOTED_IDENTIFIER, ANSI_NULLS ON imposta sia QUOTED_IDENTIFIER che ANSI_NULLS su ON.For example, SET QUOTED_IDENTIFIER, ANSI_NULLS ON sets both QUOTED_IDENTIFIER and ANSI_NULLS to ON.

  • Le impostazioni delle istruzioni SET eseguono l'override delle identiche impostazioni delle opzioni di database configurate con ALTER DATABASE.SET statement settings override identical database option settings that are set by using ALTER DATABASE. Il valore specificato in un'istruzione SET ANSI_NULLS, ad esempio, prevarrà sull'impostazione di database per ANSI_NULLS.For example, the value specified in a SET ANSI_NULLS statement will override the database setting for 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.Additionally, some connection settings get automatically set ON when a user connects to a database based on the values that go into effect by the previous use of the sp_configure user options setting, or the values that apply to all ODBC and OLE/DB connections.

  • Le istruzioni ALTER, CREATE e DROP DATABASE non rispettano l'impostazione di SET LOCK_TIMEOUT.ALTER, CREATE and DROP DATABASE statements don't honor the SET LOCK_TIMEOUT setting.

  • Quando un'istruzione SET globale o di scelta rapida include diverse impostazioni, eseguendola vengono ripristinate le impostazioni precedenti per tutte le opzioni interessate.When a global or shortcut SET statement sets several settings, issuing the shortcut SET statement resets the previous settings for all those options that the shortcut SET statement affects. 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.If a SET option that gets affected by a shortcut SET statement gets set after the shortcut SET statement gets issued, the individual SET statement overrides the comparable shortcut settings. Un esempio di istruzione SET di scelta rapida è SET ANSI_DEFAULTS.An example of a shortcut SET statement would be SET ANSI_DEFAULTS.

  • Quando si usano batch, il contesto di database è determinato dal batch stabilito con l'istruzione USE.When batches are used, the database context is determined by the batch that is established by using the USE statement. 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.Unplanned queries and all other statements that run outside the stored procedure and that are in batches inherit the option settings of the database and connection established by the USE statement.

  • Le richieste MARS (Multiple Active Result Set) condividono uno stato globale che contiene le impostazioni delle opzioni SET della sessione più recente.Multiple Active Result Set (MARS) requests share a global state that contains the most recent session SET option settings. Quando viene eseguita, ogni richiesta può modificare le opzioni SET.When each request executes, it can modify the SET options. Le modifiche sono specifiche del contesto della richiesta in cui vengono impostate e non influiscono sulle altre richieste MARS simultanee.The changes are specific to the request context in which they're set, and don't affect other concurrent MARS requests. Al termine dell'esecuzione della richiesta, tuttavia, le nuove opzioni SET vengono copiate nello stato della sessione globale.However, after the request execution is completed, the new SET options are copied to the global session state. Le nuove richieste che vengono eseguite nella stessa sessione dopo questa modifica utilizzeranno queste nuove impostazioni delle opzioni SET.New requests that execute under the same session after this change will use these new SET option settings.

  • 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.When a stored procedure runs from a batch or from another stored procedure, it's run under the option values set up in the database that has the 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.For example, when stored procedure db1.dbo.sp1 calls stored procedure db2.dbo.sp2, stored procedure sp1 executes under the current compatibility level setting of database db1, and stored procedure sp2 executes under the current compatibility level setting of database db2.

  • Quando un'istruzione Transact-SQLTransact-SQL riguarda oggetti che si trovano in più database, a tale istruzione si applicano il contesto di database e il contesto di connessione correnti.When a Transact-SQLTransact-SQL statement concerns objects that are in multiple databases, the current database context and the current connection context applies to that statement. In questo caso, se l'istruzione Transact-SQLTransact-SQL si trova in un batch, il contesto della connessione corrente è il database definito dall'istruzione USE. Se l'istruzione Transact-SQLTransact-SQL si trova in una stored procedure, il contesto della connessione è il database che contiene la stored procedure.In this case, if Transact-SQLTransact-SQL statement is in a batch, the current connection context is the database defined by the USE statement; if the Transact-SQLTransact-SQL statement is in a stored procedure, the connection context is the database that contains the stored procedure.

  • Quando si creano e si modificano indici su colonne calcolate o viste indicizzate, è necessario impostare le opzioni SET seguenti su ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING e ANSI_WARNINGS.When you're creating and manipulating indexes on computed columns or indexed views, you must set these SET options to ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING, and ANSI_WARNINGS. Impostare l'opzione NUMERIC_ROUNDABORT su OFF.Set the option NUMERIC_ROUNDABORT to 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.If you don't set any one of these options to the required values, INSERT, UPDATE, DELETE, DBCC CHECKDB, and DBCC CHECKTABLE actions on indexed views or tables with indexes on computed columns will fail. In SQL ServerSQL Server verrà generato un avviso contenente tutte le opzioni impostate in modo errato.SQL ServerSQL Server will raise an error listing all the options that are incorrectly set. SQL ServerSQL Server elaborerà inoltre le istruzioni SELECT su tali tabelle o viste indicizzate come se gli indici sulle colonne calcolate o sulle viste non esistessero.Also, SQL ServerSQL Server will process SELECT statements on these tables or indexed views as if the indexes on computed columns or on the views don't exist.

  • Quando l'istruzione SET RESULT_SET_CACHING è impostata su ON, la funzionalità di memorizzazione nella cache dei risultati per la sessione client corrente è abilitata.When SET RESULT_SET_CACHING is ON, it enables the result caching feature for the current client session. Non è possibile impostare RESULT_SET_CACHING su ON per una sessione se è impostata su OFF a livello del database.Result_set_caching cannot be turned ON for a session if it is turned OFF at the database level. 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.When SET RESULT_SET_CACHING is OFF, the result set caching feature is disabled for the current client session. Per modificare questa impostazione è richiesta l'appartenenza al ruolo public.Changing this setting requires membership in the public role. Si applica a: Azure SQL Data Warehouse Gen2Applies to: Azure SQL Data Warehouse Gen2