SET-Anweisungen (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Die Programmiersprache Transact-SQL bietet eine Reihe von SET-Anweisungen, mit denen die Verarbeitung bestimmter Informationen in der aktuellen Sitzung geändert werden kann. Die SET-Anweisungen sind in die in der folgenden Tabelle gezeigten Kategorien unterteilt.

Informationen zum Festlegen von lokalen Variablen mit der SET-Anweisung finden Sie unter SET @local_variable (Transact-SQL).

Category Anweisungen
Datums- und Zeitanweisungen SET DATEFIRST

SET DATEFORMAT
Sperranweisungen SET DEADLOCK_PRIORITY

SET LOCK_TIMEOUT
Verschiedene Anweisungen SET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMIT

SET FIPS_FLAGGER

SET IDENTITY_INSERT

SET LANGUAGE

SET OFFSETS

SET QUOTED_IDENTIFIER
Abfrageausführungsanweisungen SET ARITHABORT

SET ARITHIGNORE

SET FMTONLY
Hinweis: Dieses Feature wird in einer zukünftigen Version von SQL Server entfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

SET NOCOUNT

SET NOEXEC

SET NUMERIC_ROUNDABORT

SET PARSEONLY

SET QUERY_GOVERNOR_COST_LIMIT

SET RESULT SET CACHING (Vorschau)
Hinweis: Dieses Feature gilt nur für Azure Synapse Analytics.

SET ROWCOUNT

SET TEXTSIZE
Anweisungen für ISO-Einstellungen SET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ON

SET ANSI_NULLS

SET ANSI_PADDING

SET ANSI_WARNINGS
Statistikanweisungen SET FORCEPLAN

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT

Mit SET SHOWPLAN_XML

SET STATISTICS IO

SET STATISTICS XML

SET STATISTICS PROFILE

SET STATISTICS TIME
Transaktionsanweisungen SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVEL

SET XACT_ABORT

Überlegungen beim Verwenden von SET-Anweisungen

  • Alle SET-Anweisungen werden zur Ausführungs- oder Laufzeit ausgeführt, mit Ausnahme der folgenden Anweisungen, die zur Analysezeit ausgeführt werden:

    • SET FIPS_FLAGGER
    • SET OFFSETS
    • SET PARSEONLY
    • und 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. 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.

  • 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. 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. Bei Verwendung innerhalb einer gespeicherten Prozedur werden SET-Einstellungen ignoriert.

  • Die Benutzeroptionen-Einstellung von sp_configure ermöglicht serverweite Einstellungen, und sie arbeitet datenbankübergreifend. Diese Einstellung wirkt außerdem wie eine explizite SET-Anweisung, mit der Ausnahme, dass sie zur Anmeldezeit erfolgt.

  • 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. Datenbankeinstellungen überschreiben Instanzoptionseinstellungen, die mithilfe von sp_configure festgelegt werden.

  • Wenn eine SET-Anweisung die Einstellungen ON und OFF verwendet, können Sie eine der Einstellungen für mehrere SET-Optionen angeben.

    Hinweis

    Dies gilt nicht für die statistikbezogenen SET-Optionen.

    Beispielsweise legt SET QUOTED_IDENTIFIER, ANSI_NULLS ON sowohl für QUOTED_IDENTIFIER als auch für ANSI_NULLS die Einstellung ON fest.

  • Einstellungen von SET-Anweisungen überschreiben die Einstellungen identischer Datenbankoptionen, die mithilfe von ALTER DATABASE festgelegt werden. Beispielsweise überschreibt der in einer SET ANSI_NULLS-Anweisung angegebene Wert die Datenbankeinstellung für 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.

  • Die Anweisungen ALTER, CREATE und DROP DATABASE berücksichtigen die Einstellung von SET LOCK_TIMEOUT nicht.

  • 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. 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. Ein Beispiel für eine zusammengefasste SET-Anweisung wäre SET ANSI_DEFAULTS.

  • Wenn Batches verwendet werden, wird der Datenbankkontext durch den Batch bestimmt, der mithilfe der USE-Anweisung eingerichtet wird. 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.

  • 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. Bei der Ausführung kann jede Anforderung die SET-Optionen ändern. Die Änderungen gelten speziell für den Anforderungskontext, in dem sie festgelegt werden, und haben keine Auswirkungen auf andere gleichzeitige MARS-Anforderungen. Nachdem die Anforderungsausführung abgeschlossen ist, werden die neuen SET-Optionen jedoch in den globalen Status der Sitzung kopiert. Neue Anforderungen, die nach dieser Änderung unter der gleichen Sitzung ausgeführt werden, verwenden diese neuen SET-Optionseinstellungen.

  • 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. 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.

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

  • 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. Die Option NUMERIC_ROUNDABORT muss auf OFF festgelegt sein.

    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. SQL Server löst einen Fehler aus, in dem alle Optionen aufgelistet werden, die nicht ordnungsgemäß festgelegt sind. Außerdem verarbeitet SQL Server die SELECT-Anweisungen in diesen Tabellen oder indizierten Sichten so, als seien die Indizes in den berechneten Spalten oder Sichten nicht vorhanden.

  • Wenn RESULT_SET_CACHING auf ON festgelegt ist, aktiviert dies die Funktion für Ergebniszwischenspeicherung für die aktuelle Clientsitzung. Result_set_caching kann für eine Sitzung nicht aktiviert werden (ON), wenn es auf Datenbankebene deaktiviert (OFF) ist. Wenn RESULT_SET_CACHING auf OFF festgelegt ist, ist die Funktion für Ergebniszwischenspeicherung für die aktuelle Clientsitzung deaktiviert. Um diese Einstellung zu ändern, ist die Mitgliedschaft in der Rolle „public“ (Öffentlich) erforderlich. Gilt für: Azure Synapse Analytics Gen2