Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-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 .
Ü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 ONsetzt 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