SET Aussagen (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Analyseendpunkt in Microsoft FabricLagerhaus in Microsoft FabricSQL-Datenbank in Microsoft Fabric

Die Programmiersprache Transact-SQL bietet mehrere SET Anweisungen, die die aktuelle Sitzungshandhabung bestimmter Informationen ändern. Die Aussagen SET werden in die in der folgenden Tabelle gezeigten Kategorien gruppiert.

Informationen zum Setzen lokaler Variablen mit der SET Aussage finden SET @local_variable (Transact-SQL)Sie unter .

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 ERGEBNIS-CACHING SET (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

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 bei der Verwendung der SET Aussagen

  • Alle SET Anweisungen laufen zur Ausführung oder zur Laufzeit, mit Ausnahme dieser Anweisungen, die zur Parsezeit 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, wird der Wert der SET Option wiederhergestellt, nachdem die gespeicherte Prozedur oder der Trigger die Kontrolle zurückgegeben hat. Wenn du außerdem eine SET Anweisung in einer dynamischen SQL-Zeichenkette angibst, die entweder mit sp_executesql oder EXECUTE läuft, wird der Wert der SET Option wiederhergestellt, nachdem Control aus dem von dir im dynamischen SQL-String angegebenen Batch zurückgekehrt ist.

  • Gespeicherte Prozeduren werden mit den SET zum Zeitpunkt der Ausführung angegebenen Einstellungen ausgeführt, mit Ausnahme von SETSET ANSI_NULLS und SETSET QUOTED_IDENTIFIER. Gespeicherte Prozeduren spezifizieren SETSET ANSI_NULLS oder SETSET QUOTED_IDENTIFIER verwenden die Einstellung, die zur Erstellung der gespeicherten Prozeduren festgelegt wurde. Wenn sie innerhalb eines gespeicherten Verfahrens verwendet werden, wird jede SET Einstellung ignoriert.

  • Die Benutzeroptionen-Einstellung von sp_configure ermöglicht serverweite Einstellungen, und sie arbeitet datenbankübergreifend. Diese Einstellung verhält sich ebenfalls wie eine explizite SET Anweisung, nur dass sie beim Anmelden auftritt.

  • Datenbankeinstellungen, die mit verwendet ALTER DATABASE werden, sind nur auf Datenbankebene gültig und treten nur dann in Kraft, wenn sie explizit gesetzt sind. Datenbankeinstellungen überschreiben Instanzoptionseinstellungen, die mithilfe von sp_configure festgelegt werden.

  • Wenn eine SET Aussage AN und AUS verwendet, kannst du eine von beiden für mehrere SET Optionen angeben.

    Hinweis

    Das gilt nicht für die statistikbezogenen SET Optionen.

    Zum Beispiel SET QUOTED_IDENTIFIER, ANSI_NULLS ON setzt sowohl QUOTED_IDENTIFIER als auch ANSI_NULLS auf ON.

  • SET Anweisungseinstellungen überschreiben identische Datenbankoptionen, die mit ALTER DATABASE. festgelegt werden. Zum Beispiel ü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.

  • ALTER, CREATE und DROP DATABASE Statements respektieren das SETSET LOCK_TIMEOUT Setting nicht.

  • Wenn eine globale oder Shortcut-Anweisung SET mehrere Einstellungen setzt, setzt die Ausgabe der Shortcut-Anweisung SET die vorherigen Einstellungen für alle Optionen zurück, die die Shortcut-Anweisung SET beeinflusst. Wenn eine SET Option, die von einer Shortcut-Anweisung SET beeinflusst wird, nach der Ausgabe der Shortcut-Anweisung SET gesetzt wird, überschreibt die einzelne SET Anweisung die vergleichbaren Shortcut-Einstellungen. Ein Beispiel für eine Abkürzungsanweisung SET wäre SETSET 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.

  • Mehrere Active Result Set (MARS)-Anfragen teilen sich einen globalen Zustand, der die aktuellsten Sitzungsoptionen SET enthält. Wenn jede Anfrage ausgeführt wird, können die SET Optionen geändert werden. Die Änderungen gelten speziell für den Anforderungskontext, in dem sie festgelegt werden, und haben keine Auswirkungen auf andere gleichzeitige MARS-Anforderungen. Nach Abschluss der Anfrageausführung werden die neuen SET Optionen jedoch in den globalen Sitzungszustand kopiert. Neue Anfragen, die nach dieser Änderung unter derselben 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.

  • Wenn Sie Indizes auf berechneten Spalten oder indexierten Ansichten erstellen und bearbeiten, müssen Sie diese SET Optionen auf AN setzen: ARITHABORT, CONCAT_NULL_YIELDS_NULL, , QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDINGund ANSI_WARNINGS. Setze die Option NUMERIC_ROUNDABORT auf AUS.

    Wenn Sie keine dieser Optionen auf die erforderlichen Werte setzen, INSERTUPDATEDELETEschlagen die DBCC CHECKDB- und DBCC CHECKTABLE-Aktionen auf indexierten Ansichten oder Tabellen mit Indizes auf berechneten 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 SET RESULT_SET_CACHING AN ist, aktiviert es die Ergebnis-Caching-Funktion für die aktuelle Client-Sitzung. Result_set_caching kann für eine Sitzung nicht aktiviert werden (ON), wenn es auf Datenbankebene deaktiviert (OFF) ist. Wenn SET RESULT_SET_CACHING AUS ist, wird die Caching-Funktion der Ergebnismenge für die aktuelle Client-Sitzung deaktiviert. Um diese Einstellung zu ändern, ist die Mitgliedschaft in der Rolle „public“ (Öffentlich) erforderlich. Gilt für: Azure Synapse Analytics Gen2