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

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)neinAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel 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 festgelegt @local_variable ( Transact-SQL ) .For information about setting local variables with the SET statement, see SET @local_variable (Transact-SQL).

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

SET DATEFORMAT-EINSTELLUNGSET 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-SPRACHESET 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. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird.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. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird.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 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

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 außer SET FIPS_FLAGGER, SET OFFSETS, SET PARSEONLY und SET QUOTED_IDENTIFIER werden zur Ausführungs- oder Laufzeit implementiert.All SET statements are implemented at execute or run time, except for SET FIPS_FLAGGER, SET OFFSETS, SET PARSEONLY, and SET QUOTED_IDENTIFIER. Die genannten Anweisungen werden zur Analysezeit implementiert.These statements are implemented at parse time.

  • 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 is run in a stored procedure or trigger, the value of the SET option is restored after control is returned from the stored procedure or trigger. Auch wenn eine SET-Anweisung in einer dynamischen SQL-Zeichenfolge angegeben wird, die ausgeführt wird, indem Sie entweder Sp_executesql oder ausführen, den Wert der Option "SET" wird wiederhergestellt, wenn in der dynamischen SQL-Zeichenfolge angegebene Batch die Steuerung zurückgegeben hat.Also, if a SET statement is specified in a dynamic SQL string that is run by using either sp_executesql or EXECUTE, the value of the SET option is restored after control is returned from the batch 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 des Sp_configure ermöglicht serverweite Einstellungen, und 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 festgelegt sind Sp_configure.Database settings override instance option settings that are set by using sp_configure.

  • Bei jeder SET-Anweisung, die über die Einstellungen ON und OFF verfügt, können Sie die Einstellung ON oder OFF für mehrere SET-Optionen gleichzeitig angeben.For any one of the SET statements with ON and OFF settings, you can specify either an ON or OFF setting for multiple SET options.

    Hinweis

    Dies gilt nicht für die statistikbezogenen SET-Optionen.This does not apply to the statistics related SET options.

    Beispielsweise SET QUOTED_IDENTIFIER, ANSI_NULLS ON Legt QUOTED_IDENTIFIER und ANSI_NULLS auf 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 entsprechenden Einstellungen der Datenbankoptionen, die mithilfe von ALTER DATABASE festgelegt werden.SET statement settings override equivalent 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 einige Verbindungseinstellungen werden automatisch festgelegt auf, wenn ein Benutzer mit einer Datenbank auf Grundlage der Werte, die durch vorherige Verwendung der in Kraft getreten verbindet die Sp_configure Benutzeroptionen Einstellung oder die Werte, die für alle ODBC gelten und OLE DB-Verbindungen.Additionally, some connection settings are automatically set ON when a user connects to a database based on the values put 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 do not honor the SET LOCK_TIMEOUT setting.

  • Wenn eine globale oder zusammengefasste SET-Anweisung, wie z. B. SET ANSI_DEFAULTS, 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, such as SET ANSI_DEFAULTS, sets several settings, issuing the shortcut SET statement resets the previous settings for all those options affected by the shortcut SET statement. Wenn eine einzelne von einer zusammengefassten SET-Anweisung betroffene SET-Option explizit festgelegt wird, nachdem die zusammengefasste SET-Anweisung ausgegeben wurde, überschreibt die individuelle SET-Anweisung die entsprechenden Einstellungen der zusammengefassten SET-Anweisung.If an individual SET option that is affected by a shortcut SET statement is explicitly set after the shortcut SET statement is issued, the individual SET statement overrides the corresponding shortcut settings.

  • Wenn Batches verwendet werden, wird der Datenbankkontext durch den Batch bestimmt, der mithilfe der USE-Anweisung eingerichtet wurde.When batches are used, the database context is determined by the batch established by using the USE statement. Ad-hoc-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 wurden.Ad hoc queries and all other statements that are executed 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 are set, and do not 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, so wird sie anhand der aktuellen Optionswerte der Datenbank ausgeführt, die die gespeicherte Prozedur enthält.When a stored procedure is executed, either from a batch or from another stored procedure, it is executed under the option values that are currently set in the database that contains the stored procedure. Beispielsweise, wenn die gespeicherte Prozedur db1.dbo. SP1 ruft gespeicherte Prozedur db2.dbo.sp2, gespeicherte Prozedur sp1 unter den aktuellen Kompatibilitätsgrad ausgeführt wird Festlegen der Datenbank db1, sowie die gespeicherte Prozedur sp2 wird innerhalb der aktuellen Einstellung des Kompatibilitätsgrades der Datenbank ausgeführt db2.For example, when stored procedure db1.dbo.sp1 calls stored procedure db2.dbo.sp2, stored procedure sp1 is executed under the current compatibility level setting of database db1, and stored procedure sp2 is executed under the current compatibility level setting of database db2.

  • Wenn eine Transact-SQLTransact-SQL-Anweisung auf Objekte verweist, die in mehreren Datenbanken gespeichert sind, gelten der aktuelle Datenbankkontext und der aktuelle Verbindungskontext für die Anweisung.When a Transact-SQLTransact-SQL statement refers to objects that reside 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 die SET-Optionen ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING und ANSI_WARNINGS auf ON festgelegt sein.When you are creating and manipulating indexes on computed columns or indexed views, the SET options ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING, and ANSI_WARNINGS must be set to ON. Die Option NUMERIC_ROUNDABORT muss auf OFF festgelegt sein.The option NUMERIC_ROUNDABORT must be set to OFF.

    Wenn eine dieser Optionen nicht auf die erforderlichen Werte festgelegt ist, 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 any one of these options is not set 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 do not exist.