Verwalten der Babelfish-Fehlerbehandlung mit Escape-Schraffuren - Amazon Aurora

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwalten der Babelfish-Fehlerbehandlung mit Escape-Schraffuren

Babelfish ahmt das SQL-Verhalten in Bezug auf den Kontrollfluss und den Transaktionsstatus nach Möglichkeit nach. Wenn Babelfish auf einen Fehler stößt, gibt es nach Möglichkeit einen Fehlercode zurück, der dem SQL Server-Fehlercode ähnelt. Wenn Babelfish den Fehler keinem SQL-Server-Code zuordnen kann, gibt es einen festen Fehlercode (33557097) zurück und führt spezifische Aktionen basierend auf der Art des Fehlers wie folgt aus:

  • Bei Kompilierzeitfehlern führt Babelfish ein Rollback für die Transaktion aus.

  • Wenn es sich um einen Laufzeitfehler handelt, beendet Babelfish den Stapel und führt ein Rollback für die Transaktion aus.

  • Bei einem Protokollfehler zwischen Client und Server wird kein Rollback der Transaktion ausgeführt.

Wenn ein Fehlercode nicht einem äquivalenten Code zugeordnet werden kann und der Code für einen ähnlichen Fehler verfügbar ist, wird der Fehlercode dem alternativen Code zugeordnet. Zum Beispiel die Verhaltensweisen, die SQL Server-Codes 8143 und 8144 verursachen, sind beide als 8143 mappiert.

Fehler, die nicht mappiert werden können, respektieren ein TRY... CATCH-Konstrukt nicht.

Sie können @@ERROR nutzen, um einen SQL Server-Fehlercode zurückzugeben, oder die @@PGERROR-Funktion, um einen PostgreSQL-Fehlercode zurückzugeben. Sie können auch die fn_mapped_system_error_list-Funktion nutzen, um eine Liste der zugeordneten Fehlercodes zurückzugeben. Weitere Informationen zu PostgreSQL-Fehlercodes finden Sie unter Die PostgreSQL-Website.

Ändern der Escape-Schraffureinstellungen in Babelfish

Um besser mit Anweisungen umzugehen, die scheitern könnten, definiert Babelfish bestimmte Optionen, die als Escape-Schraffuren bezeichnet werden. Eine Escape-Luke ist eine Option, die das Verhalten von Babelfish angibt, wenn es auf eine nicht unterstütztes Funktion oder eine nicht unterstützte Syntax stößt.

Sie können die sp_babelfish_configure gespeicherte Prozedur zur Steuerung der Einstellungen einer Escape-Schraffur nutzen. Verwenden Sie das Skript, um die Escape-Schraffur auf ignore oder strict zu setzen. Wenn es auf strict eingestellt ist, gibt Babelfish einen Fehler zurück, den Sie korrigieren müssen, bevor Sie fortfahren.

Schließen Sie das server-Schlüsselwort ein, um die Änderungen auf die aktuelle Sitzung und auf Clusterebene anzuwenden.

Die Verwendung ist wie folgt:

  • Um alle Escape-Schraffuren und ihren Status sowie Nutzungsinformationen aufzulisten, führen Sie sp_babelfish_configure aus.

  • Führen Sie den Befehl sp_babelfish_configure 'hatch_name' aus, um die benannten Escape-Schraffuren und ihre Werte für die aktuelle oder clusterweite Sitzung aufzulisten, wo hatch_name die Kennung einer oder mehrerer Escape-Schraffuren hatch_name SQL-Platzhalter wie '%' verwenden kann.

  • Um eine oder mehrere Escape-Schraffuren auf den angegebenen Wert festzulegen, führen Sie sp_babelfish_configure ['hatch_name' [, 'strict'|'ignore' [, 'server']] aus. Um die Einstellungen auf einer clusterweiten Ebene dauerhaft zu machen, schließen Sie das server-Schlüsselwort ein, wie im Folgenden dargestellt:

    EXECUTE sp_babelfish_configure 'escape_hatch_unique_constraint', 'ignore', 'server'

    Um sie nur für die aktuelle Sitzung festzulegen, verwenden Sie server nicht.

  • Führen Sie sp_babelfish_configure 'default' (Babelfish 1.2.0 und höher) aus, um alle Escape-Schraffuren auf ihre Standardwerte zurückzusetzen.

Die Zeichenfolge, die die Schraffur (oder Schraffuren) identifiziert, kann SQL-Platzhalter enthalten. Im Folgenden werden beispielsweise alle Syntax-Escape-Schraffuren festgelegt auf ignore für den Aurora-PostgreSQL-Cluster.

EXECUTE sp_babelfish_configure '%', 'ignore', 'server'

In der folgenden Tabelle finden Sie Beschreibungen und Standardwerte für die vordefinierten Escape-Schraffuren von Babelfish.

Escape-Luke Beschreibung Standard
escape_hatch_checkpoint

Erlaubt die Verwendung der CHECKPOINT-Anweisung im prozeduralen Code, die CHECKPOINT-Anweisung ist derzeit jedoch nicht implementiert.

ignore

escape_hatch_constraint_name_for_default

Steuert das Verhalten von Babelfish im Zusammenhang mit Standardbeschränkungsnamen.

ignore

escape_hatch_database_misc_options

Steuert das Verhalten von Babelfish im Zusammenhang mit den folgenden Optionen in CREATE oder ALTER DATABASE: CONTAINMENT, DB_CHAINING, TRUSTWORTHY, PERSISTENT_LOG_BUFFER.

ignore

escape_hatch_for_replication

Steuert das Verhalten von Babelfish im Zusammenhang mit der [NOT] FOR REPLICATION-Klausel beim Erstellen oder Ändern einer Tabelle.

strict

escape_hatch_fulltext

Steuert das Verhalten von Babelfish im Zusammenhang mit FULLTEXT-Features wie DEFAULT_FULLTEXT_LANGUAGE in CREATE/ALTER DATABASE, CREATE FULLTEXT INDEX oder sp_fulltext_database.

ignore

escape_hatch_ignore_dup_key

Steuert das Verhalten von Babelfish im Zusammenhang mit CREATE/ALTER TABLE und CREATE INDEX. Wenn IGNORE_DUP_KEY=ON gilt, wird ein Fehler ausgelöst, wenn die Einstellung strict (Standardwert) festgelegt ist, oder der Fehler ignoriert, wenn die Einstellung ignore lautet (Babelfish Version 1.2.0 und höher).

strict

escape_hatch_index_clustering

Steuert das Verhalten von Babelfish im Zusammenhang mit den Schlüsselwörtern CLUSTERED oder NONCLUSTERED für Indizes und PRIMARY KEY- oder UNIQUE-Einschränkungen. Wenn CLUSTERED ignoriert wird, wird der Index oder die Einschränkung immer noch so erstellt, als wäre NONCLUSTERED angegeben worden.

ignore

escape_hatch_index_columnstore

Steuert das Verhalten von Babelfish im Zusammenhang mit der COLUMNSTORE-Klausel. Wenn Sie ignore angeben, erstellt Babelfish einen regulären B-Baum-Index.

strict

escape_hatch_join_hints

Steuert das Verhalten von Schlüsselwörtern in einem JOIN-Operator: LOOP, HASH, MERGE, REMOTE, REDUCATE, REDISTRIBUTE, REPLICATE.

ignore

escape_hatch_language_non_english

Steuert das Verhalten von Babelfish im Zusammenhang mit anderen Sprachen als Englisch für Nachrichten auf dem Bildschirm. Babelfish unterstützt derzeit nur us_english für Nachrichten auf dem Bildschirm. SET LANGUAGE verwendet möglicherweise eine Variable, die den Sprachnamen enthält, sodass die tatsächlich festgelegte Sprache nur zur Laufzeit erkannt werden kann.

strict

escape_hatch_login_hashed_password

Wenn es ignoriert wird, unterdrückt der Fehler für das Schlüsselwort HASHED für CREATE LOGIN und ALTER LOGIN.

strict

escape_hatch_login_misc_options

Wenn es ignoriert wird, unterdrückt der Fehler bei anderen Schlüsselwörtern außer HASHEDMUST_CHANGE, OLD_PASSWORD und UNLOCK für CREATE LOGIN und ALTER LOGIN.

strict

escape_hatch_login_old_password

Wenn es ignoriert wird, unterdrückt der Fehler für das Schlüsselwort OLD_PASSWORD für CREATE LOGIN und ALTER LOGIN.

strict

escape_hatch_login_password_must_change

Wenn es ignoriert wird, unterdrückt der Fehler für das Schlüsselwort MUST_CHANGE für CREATE LOGIN und ALTER LOGIN.

strict

escape_hatch_login_password_unlock

Wenn es ignoriert wird, unterdrückt der Fehler für das Schlüsselwort UNLOCK für CREATE LOGIN und ALTER LOGIN.

strict

escape_hatch_nocheck_add_constraint

Steuert das Verhalten von Babelfish im Zusammenhang mit der WITH CHECK- oder NOCHECK-Klausel für Einschränkungen.

strict

escape_hatch_nocheck_existing_constraint

Steuert das Verhalten von Babelfish im Zusammenhang mit FOREIGN KEY- oder CHECK-Einschränkungen.

strict

escape_hatch_query_hints

Steuert das Verhalten von Babelfish im Zusammenhang mit Abfragehinweisen. Wenn diese Option auf ignorieren eingestellt ist, ignoriert der Server Hinweise, die die OPTION (...) -Klausel verwenden, um Aspekte der Abfrageverarbeitung anzugeben. Beispiele sind SELECT FROM... OPTION (JOIN-HASH ZUSAMMENFÜHREN, MAXRECURSION 10)).

ignore

escape_hatch_rowversion

Steuert das Verhalten der Datentypen ROWVERSION und TIMESTAMP. Weitere Informationen zur Nutzung finden Sie unter Verwenden von Babelfish-Funktionen mit eingeschränkter Implementierung.

strict

escape_hatch_schemabinding_function

Steuert das Verhalten von Babelfish im Zusammenhang mit der WITH SCHEMABINDING-Klausel. Standardmäßig wird die WITH SCHEMABINDING-Klausel ignoriert, wenn sie mit dem Befehl CREATE oder ALTER FUNCTION angegeben wird.

ignore

escape_hatch_schemabinding_procedure

Steuert das Verhalten von Babelfish im Zusammenhang mit der WITH SCHEMABINDING-Klausel. Standardmäßig wird die WITH SCHEMABINDING-Klausel ignoriert, wenn sie mit dem Befehl CREATE oder ALTER PROCEDURE angegeben wird.

ignore

escape_hatch_rowguidcol_column

Steuert das Verhalten von Babelfish im Zusammenhang mit der ROWGUIDCOL-Klausel beim Erstellen oder Ändern einer Tabelle.

strict

escape_hatch_schemabinding_trigger

Steuert das Verhalten von Babelfish im Zusammenhang mit der WITH SCHEMABINDING-Klausel. Standardmäßig wird die WITH SCHEMABINDING-Klausel ignoriert, wenn sie mit dem Befehl CREATE oder ALTER TRIGGER angegeben wird.

ignore

escape_hatch_schemabinding_view

Steuert das Verhalten von Babelfish im Zusammenhang mit der WITH SCHEMABINDING-Klausel. Standardmäßig wird die WITH SCHEMABINDING-Klausel ignoriert, wenn sie mit dem Befehl CREATE oder ALTER VIEW angegeben wird.

ignore

escape_hatch_session_settings

Steuert das Verhalten von Babelfish in Richtung nicht unterstützter SET-Anweisungen auf Sitzungsebene.

ignore

escape_hatch_showplan_all

Steuert das Verhalten von Babelfish in Bezug auf SET SHOWPLAN_ALL und SET STATISTICS PROFILE. Wenn sie auf „ignore“ eingestellt sind, verhalten sie sich wie SET BABELFISH_SHOWPLAN_ALL und SET BABELFISH_STATISTICS PROFILE; wenn sie auf „strict“ festgelegt sind, werden sie stillschweigend ignoriert.

strict

escape_hatch_storage_on_partition

Steuert das Verhalten von Babelfish im Zusammenhang mit der ON partition_scheme column -Klausel beim Definieren der Partitionierung. Babelfish implementiert derzeit keine Partitionierung.

strict

escape_hatch_storage_options

Escape-Schraffur für jede Speicheroption, die in CREATE, ALTER DATABASE, TABLE, INDEX verwendet. Dazu gehören Klauseln (LOG) ON, TEXTIMAGE_ON, FILESTREAM_ON, die Speicherorte (Partitionen, Dateigruppen) für Tabellen, Indizes und Einschränkungen sowie für eine Datenbank definieren. Diese Escape-Schraffureinstellung gilt für alle diese Klauseln (einschließlich ON [PRIMARY] und ON „DEFAULT“). Die Ausnahme ist, wenn eine Partition für eine Tabelle oder einen Index mit ON partition_scheme (Spalte) angegeben wird.

ignore

escape_hatch_table_hints

Steuert das Verhalten von Tabellenhinweisen, die mit der WITH (...) -Klausel angegeben wurden.

ignore

escape_hatch_unique_constraint

Bei Einstellung auf „strict“ (streng) kann ein obskurer semantischer Unterschied zwischen SQL Server und PostgreSQL bei der Handhabung von NULL-Werten in indizierten Spalten Fehler auslösen. Der semantische Unterschied tritt nur in unrealistischen Anwendungsfällen auf, sodass Sie diese Escape-Schraffur auf „ignore“ (Ignorieren) festlegen können, um den Fehler nicht anzuzeigen.

strict