SET-Anweisungen (Transact-SQL)SET Statements (Transact-SQL)

GILT FÜR: SQL Server Azure SQL-Datenbank Azure Synapse Analytics (SQL DW) Parallel Data Warehouse

Die Programmiersprache Transact-SQLTransact-SQL bietet eine Reihe von SET-Anweisungen, mit denen die Verarbeitung bestimmter Informationen durch die aktuelle Sitzung geändert werden kann.The Transact-SQLTransact-SQL programming language provides several SET statements that change the current session handling of specific information. Die SET-Anweisungen sind in die in der folgenden Tabelle gezeigten Kategorien unterteilt.The SET statements are grouped into the categories shown in the following table.

Informationen zum Festlegen von lokalen Variablen mit der SET-Anweisung finden Sie unter SET @local_variable (Transact-SQL).For information about setting local variables with the SET statement, see SET @local_variable (Transact-SQL).

CategoryCategory AnweisungenStatements
Datums- und ZeitanweisungenDate and time statements SET DATEFIRSTSET DATEFIRST

SET DATEFORMATSET DATEFORMAT
SperranweisungenLocking statements SET DEADLOCK_PRIORITYSET DEADLOCK_PRIORITY

SET LOCK_TIMEOUTSET LOCK_TIMEOUT
Verschiedene AnweisungenMiscellaneous 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
AbfrageausführungsanweisungenQuery Execution Statements SET ARITHABORTSET ARITHABORT

SET ARITHIGNORESET ARITHIGNORE

SET FMTONLYSET FMTONLY
Hinweis: Dieses Feature wird in einer künftigen Version von Microsoft SQL Server entfernt.This feature will be removed in a future version of Microsoft SQL Server. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.Note: Dieses Feature wird in einer künftigen Version von Microsoft SQL Server entfernt.This feature will be removed in a future version of Microsoft SQL Server. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.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 (Vorschau)SET RESULT SET CACHING (Preview)
Hinweis: Dieses Feature gilt nur für Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse).Note: This feature applies to Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse) only.

SET ROWCOUNTSET ROWCOUNT

SET TEXTSIZESET TEXTSIZE
Anweisungen für ISO-EinstellungenISO 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
StatistikanweisungenStatistics statements SET FORCEPLANSET FORCEPLAN

SET SHOWPLAN_ALLSET SHOWPLAN_ALL

SET SHOWPLAN_TEXTSET SHOWPLAN_TEXT

Mit 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
TransaktionsanweisungenTransactions 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

Überlegungen beim Verwenden von SET-AnweisungenConsiderations When You Use the SET Statements

  • Alle SET-Anweisungen werden zur Ausführungs- oder Laufzeit ausgeführt, mit Ausnahme der folgenden Anweisungen, die zur Analysezeit ausgeführt werden: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
    • und SET QUOTED_IDENTIFIERand SET QUOTED_IDENTIFIER
  • Wenn eine SET-Anweisung in einer gespeicherten Prozedur oder einem Trigger ausgeführt wird, so wird der Wert der SET-Option wiederhergestellt, nachdem die gespeicherte Prozedur oder der Trigger die Steuerung zurückgegeben hat.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. Wenn Sie eine SET-Anweisung in einer dynamischen SQL-Zeichenfolge angeben, die entweder mithilfe von sp_executesql oder mithilfe von EXECUTE ausgeführt wird, wird der Wert der SET-Option ebenfalls wiederhergestellt, nachdem der von Ihnen in der dynamischen SQL-Zeichenfolge angegebene Batch die Steuerung zurückgegeben hat.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.

  • Gespeicherte Prozeduren werden mit den SET-Einstellungen ausgeführt, die zur Ausführungszeit angegeben wurden. Ausgenommen hiervon sind SET ANSI_NULLS und SET QUOTED_IDENTIFIER.Stored procedures execute with the SET settings specified at execute time except for SET ANSI_NULLS and SET QUOTED_IDENTIFIER. Gespeicherte Prozeduren, für die SET ANSI_NULLS oder SET QUOTED_IDENTIFIER angegeben ist, verwenden die Einstellung, die zur Erstellungszeit der gespeicherten Prozedur angegeben wurde.Stored procedures specifying SET ANSI_NULLS or SET QUOTED_IDENTIFIER use the setting specified at stored procedure creation time. Bei Verwendung innerhalb einer gespeicherten Prozedur werden SET-Einstellungen ignoriert.If used inside a stored procedure, any SET setting is ignored.

  • Die Benutzeroptionen-Einstellung von sp_configure ermöglicht serverweite Einstellungen, und sie arbeitet datenbankübergreifend.The user options setting of sp_configure allows for server-wide settings and works across multiple databases. Diese Einstellung wirkt außerdem wie eine explizite SET-Anweisung, mit der Ausnahme, dass sie zur Anmeldezeit erfolgt.This setting also behaves like an explicit SET statement, except that it occurs at login time.

  • Datenbankeinstellungen, die mithilfe von ALTER DATABASE festgelegt werden, sind nur auf Datenbankebene gültig und treten nur dann in Kraft, wenn sie explizit festgelegt werden.Database settings set by using ALTER DATABASE are valid only at the database level and take effect only if explicitly set. Datenbankeinstellungen überschreiben Instanzoptionseinstellungen, die mithilfe von sp_configure festgelegt werden.Database settings override instance option settings that are set by using sp_configure.

  • Wenn eine SET-Anweisung die Einstellungen ON und OFF verwendet, können Sie eine der Einstellungen für mehrere SET-Optionen angeben.If a SET statement uses ON and OFF, you can specify either one for multiple SET options.

    Hinweis

    Dies gilt nicht für die statistikbezogenen SET-Optionen.This doesn't apply to the statistics related SET options.

    Beispielsweise legt SET QUOTED_IDENTIFIER, ANSI_NULLS ON sowohl für QUOTED_IDENTIFIER als auch für ANSI_NULLS die Einstellung ON fest.For example, SET QUOTED_IDENTIFIER, ANSI_NULLS ON sets both QUOTED_IDENTIFIER and ANSI_NULLS to ON.

  • Einstellungen von SET-Anweisungen überschreiben die Einstellungen identischer Datenbankoptionen, die mithilfe von ALTER DATABASE festgelegt werden.SET statement settings override identical database option settings that are set by using ALTER DATABASE. Beispielsweise überschreibt der in einer SET ANSI_NULLS-Anweisung angegebene Wert die Datenbankeinstellung für ANSI_NULLs.For example, the value specified in a SET ANSI_NULLS statement will override the database setting for ANSI_NULLs. Darüber hinaus werden einige Verbindungseinstellungen automatisch auf ON festgelegt, wenn ein Benutzer eine Verbindung zu einer Datenbank herstellt und dabei die Werte verwendet, die durch vorherige Verwendung der sp_configure Benutzeroptionen-Einstellung in Kraft getreten sind oder die auf alle ODBC- und OLE DB-Verbindungen angewendet werden.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.

  • Die Anweisungen ALTER, CREATE und DROP DATABASE berücksichtigen die Einstellung von SET LOCK_TIMEOUT nicht.ALTER, CREATE and DROP DATABASE statements don't honor the SET LOCK_TIMEOUT setting.

  • Wenn eine globale oder zusammengefasste SET-Anweisung mehrere Einstellungen festlegt, setzt das Ausgeben einer solchen SET-Anweisung die vorherigen Einstellungen aller Optionen außer Kraft, auf die sich die zusammengefasste SET-Anweisung auswirkt.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. Wird eine SET-Option, die von einer zusammengefassten SET-Anweisung betroffen ist, nach Ausgabe der zusammengefassten SET-Anweisung festgelegt, überschreibt die individuelle SET-Anweisung die vergleichbaren Einstellungen der zusammengefassten SET-Anweisung.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. Ein Beispiel für eine zusammengefasste SET-Anweisung wäre SET ANSI_DEFAULTS.An example of a shortcut SET statement would be SET ANSI_DEFAULTS.

  • Wenn Batches verwendet werden, wird der Datenbankkontext durch den Batch bestimmt, der mithilfe der USE-Anweisung eingerichtet wird.When batches are used, the database context is determined by the batch that is established by using the USE statement. Ungeplante Abfragen und alle anderen Anweisungen, die außerhalb der gespeicherten Prozedur ausgeführt werden und sich in Batches befinden, übernehmen die Optionseinstellungen der Datenbank und der Verbindung, die mit der USE-Anweisung eingerichtet werden.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.

  • MARS-Anforderungen (Multiple Active Result Set) nutzen gemeinsam einen globalen Status, der die jeweils aktuellen Einstellungen der SET-Optionen für die Sitzung enthält.Multiple Active Result Set (MARS) requests share a global state that contains the most recent session SET option settings. Bei der Ausführung kann jede Anforderung die SET-Optionen ändern.When each request executes, it can modify the SET options. Die Änderungen gelten speziell für den Anforderungskontext, in dem sie festgelegt werden, und haben keine Auswirkungen auf andere gleichzeitige MARS-Anforderungen.The changes are specific to the request context in which they're set, and don't affect other concurrent MARS requests. Nachdem die Anforderungsausführung abgeschlossen ist, werden die neuen SET-Optionen jedoch in den globalen Status der Sitzung kopiert.However, after the request execution is completed, the new SET options are copied to the global session state. Neue Anforderungen, die nach dieser Änderung unter der gleichen Sitzung ausgeführt werden, verwenden diese neuen SET-Optionseinstellungen.New requests that execute under the same session after this change will use these new SET option settings.

  • Wird eine gespeicherte Prozedur aus einem Batch oder einer anderen gespeicherten Prozedur heraus ausgeführt, werden hierbei die Optionswerte verwendet, die in der Datenbank eingerichtet sind, die die gespeicherte Prozedur enthält.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. Wenn z.B. die gespeicherte Prozedur db1.dbo.sp1 die gespeicherte Prozedur db2.dbo.sp2 aufruft, wird die gespeicherte Prozedur sp1 unter der aktuellen Einstellung des Kompatibilitätsgrades von Datenbank db1 ausgeführt, und die gespeicherte Prozedur sp2 wird unter der aktuellen Einstellung des Kompatibilitätsgrades von Datenbank db2 ausgeführt.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.

  • Wenn eine Transact-SQLTransact-SQL-Anweisung Objekte betrifft, die sich in mehreren Datenbanken befinden, gelten der aktuelle Datenbankkontext und der aktuelle Verbindungskontext für die Anweisung.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. Befindet sich die Transact-SQLTransact-SQL-Anweisung in diesem Fall in einem Batch, handelt es sich bei dem aktuellen Verbindungskontext um die durch die USE-Anweisung definierte Datenbank. Befindet sich die Transact-SQLTransact-SQL-Anweisung in einer gespeicherten Prozedur, handelt es sich bei dem Verbindungskontext um die Datenbank, die die gespeicherte Prozedur enthält.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.

  • Beim Erstellen und Bearbeiten von Indizes für berechnete Spalten oder indizierten Sichten müssen Sie die folgenden SET-Optionen auf ON festlegen: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING und 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. Die Option NUMERIC_ROUNDABORT muss auf OFF festgelegt sein.Set the option NUMERIC_ROUNDABORT to OFF.

    Wenn Sie keine dieser Optionen auf die erforderlichen Werte festlegen, schlagen die Aktionen INSERT, UPDATE, DELETE, DBCC CHECKDB und DBCC CHECKTABLE für die indizierten Sichten oder Tabellen mit Indizes für berechnete Spalten fehl.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. SQL ServerSQL Server löst einen Fehler aus, wobei alle Optionen aufgelistet werden, die nicht ordnungsgemäß festgelegt sind.will raise an error listing all the options that are incorrectly set. Außerdem verarbeitet SQL ServerSQL Server die SELECT-Anweisungen in diesen Tabellen oder indizierten Sichten so, als seien die Indizes auf den berechneten Spalten oder Sichten nicht vorhanden.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.

  • Wenn RESULT_SET_CACHING auf ON festgelegt ist, aktiviert dies die Funktion für Ergebniszwischenspeicherung für die aktuelle Clientsitzung.When SET RESULT_SET_CACHING is ON, it enables the result caching feature for the current client session. Result_set_caching kann für eine Sitzung nicht aktiviert werden (ON), wenn es auf Datenbankebene deaktiviert (OFF) ist.Result_set_caching cannot be turned ON for a session if it is turned OFF at the database level. Wenn RESULT_SET_CACHING auf OFF festgelegt ist, ist die Funktion für Ergebniszwischenspeicherung für die aktuelle Clientsitzung deaktiviert.When SET RESULT_SET_CACHING is OFF, the result set caching feature is disabled for the current client session. Um diese Einstellung zu ändern, ist die Mitgliedschaft in der Rolle „public“ (Öffentlich) erforderlich.Changing this setting requires membership in the public role. Gilt für: Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse) Gen2Applies to: Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse) Gen2