使用逃生艙管理 Babelfish 錯誤處理 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用逃生艙管理 Babelfish 錯誤處理

Babelfish 盡可能模仿SQL控制流和事務狀態的行為。當 Babelfish 遇到錯誤時,它會返回類似於SQL服務器錯誤代碼的錯誤代碼。如果 Babelfish 無法將錯誤映射到SQL服務器代碼,它會返回一個固定的錯誤代碼(33557097),並根據錯誤類型採取特定的操作,如下所示:

  • 針對編譯階段錯誤,Babelfish 會回復交易。

  • 針對執行階段錯誤,Babelfish 會結束批次並回復交易。

  • 對於用戶端和伺服器之間的通訊協定錯誤,不會回復交易。

如果錯誤代碼無法映射至同等代碼,但類似錯誤有可用代碼,則錯誤代碼會映射至替代碼。例如,造成SQL伺服器程式碼8143且兩者8144都對應至的行為8143

無法映射的錯誤不遵守 TRY... CATCH 建構。

您可以使用@@ERROR返回SQL服務器錯誤代碼,或者該@@PGERROR函數返回 Postgre SQL 錯誤代碼。您也可以使用 fn_mapped_system_error_list 函數來傳回映射的錯誤代碼清單。如需有關SQL錯誤碼的詳細資訊,請參閱 Postgre SQL 網站。

修改 Babelfish 逃生艙設定

為了處理可能失敗的陳述式,Babelfish 定義幾個稱為逃生艙的選項。逃生艙選項指定 Babelfish 遇到不支援的功能或語法時採取的行為。

您可以使用 sp_babelfish_configure 預存程序來控制逃生艙的設定。使用指令碼將逃生艙設定為 ignorestrict。如果設定為 strict,Babelfish 會傳回錯誤,您必須更正才能繼續。

將變更套用至目前工作階段和叢集層級,包括 server 關鍵字。

用法如下:

  • 若要列出所有逃生艙及狀態,還有使用資訊,請執行 sp_babelfish_configure

  • 若要列出具名的逸出剖面線及其值,請針對目前工作階段或整個叢集執行指令,sp_babelfish_configure 'hatch_name'其中hatch_name是一或多個逸出剖面線的識別碼。hatch_name 可以使用SQL萬用字元,例如「%」。

  • 若要將一個或多個逃生艙設定為指定的值,請執行 sp_babelfish_configure ['hatch_name' [, 'strict'|'ignore' [, 'server']]。若要讓設定永久存在於叢集全面層級上,請加上 server 關鍵字,如下所示:

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

    若只要在目前工作階段中設定,請勿使用 server

  • 若要將所有逃生艙重設為其預設值,請執行 sp_babelfish_configure 'default' (Babelfish 1.2.0 及更高版本)。

識別填充線 (一或多個填充線) 的字串可以包括SQL萬用字元。例如,以下內容將 Aurora Postgre SQL 叢集的所有語法逸出填充線設定ignore為。

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

在下表中,您可以找到 Babelfish 預先定義逃生艙的說明和預設值。

逃生艙 描述 預設
escape_hatch_checkpoint

允許在程序程式碼中使用CHECKPOINT陳述式,但是CHECKPOINT陳述式目前尚未實作。

ignore

escape_hatch_constraint_name_for_default

控制預設限制條件名稱相關的 Babelfish 行為。

ignore

escape_hatch_database_misc_options

控制與CREATE或上的下列選項相關的巴氏魚行為 ALTERDATABASE:CONTAINMENT、DB_ CHAINING TRUSTWORTHY、PERSISTENT _。LOG BUFFER

ignore

escape_hatch_for_replication

在建立或變更資料表時,控制與 [NOT] FOR REPLICATION 子句相關的 Babelfish 行為。

strict

escape_hatch_fulltext

控制與FULLTEXT特徵相關的巴貝魚行為,例如 DEFAULT FULLTEXT _ LANGUAGE 在CREATE/ALTERDATABASE、或 sp_fulltext_資料庫CREATEFULLTEXTINDEX中。

ignore

escape_hatch_ignore_dup_key

控制與CREATE/ALTERTABLE和相關的巴貝魚行為。CREATE INDEX當 IGNORE _ DUP _ KEY = ON 時,設置為(默認值)時引發錯誤,或者在設置為 strictignore(Babelfish 版本 1.2.0 及更高版本)時忽略錯誤。

strict

escape_hatch_index_clustering

控制與索引和PRIMARYKEY或條件約束的CLUSTERED或關NONCLUSTERED鍵字相關的 Babelfish 行為。UNIQUE忽略CLUSTERED時,仍會建立索引或條件約束,就像NONCLUSTERED已指定一樣。

ignore

escape_hatch_index_columnstore

控制與子句相關的COLUMNSTORE巴貝魚行為。如果指定 ignore,Babelfish 會建立正規 B 型樹狀結構索引。

strict

escape_hatch_join_hints

控制關鍵字在JOIN運算子中的行為:LOOPHASH、MERGE、、REMOTE、REDUCE、REDISTRIBUTE、、REPLICATE。

ignore

escape_hatch_language_non_english

控制英文以外的螢幕訊息語言相關的 Babelfish 行為。Abelfish 目前僅支援 us_english 的螢幕訊息。SETLANGUAGE可能會使用包含語言名稱的變數,因此設定的實際語言只能在執行階段偵測到。

strict

escape_hatch_login_hashed_password

忽略時會抑制 CREATE LOGINALTER LOGINHASHED 關鍵字的錯誤。

strict

escape_hatch_login_misc_options

忽略時,除了 CREATE LOGINALTER LOGINHASHEDMUST_CHANGEOLD_PASSWORDUNLOCK 之外,還會抑制其他關鍵字的錯誤。

strict

escape_hatch_login_old_password

忽略時會抑制 CREATE LOGINALTER LOGINOLD_PASSWORD 關鍵字的錯誤。

strict

escape_hatch_login_password_must_change

忽略時會抑制 CREATE LOGINALTER LOGINMUST_CHANGE 關鍵字的錯誤。

strict

escape_hatch_login_password_unlock

忽略時會抑制 CREATE LOGINALTER LOGINUNLOCK 關鍵字的錯誤。

strict

escape_hatch_nocheck_add_constraint

控制與條件約束的WITHCHECK或NOCHECK子句相關的巴貝魚行為。

strict

escape_hatch_nocheck_existing_constraint

控制與FOREIGNKEY或CHECK約束相關的巴貝魚行為。

strict

escape_hatch_query_hints

控制查詢提示相關的 Babelfish 行為。當此選項設定為忽略時,伺服器會忽略使用 OPTION (...) 子句來指定查詢處理方面的提示。範例包括 SELECTFROM... OPTION(MERGEJOINHASH, MAXRECURSION 十)).

ignore

escape_hatch_rowversion

控制ROWVERSION和TIMESTAMP資料類型的行為。如需使用方式的資訊,請參閱 使用具有限制實作的 Babelfish 功能

strict

escape_hatch_schemabinding_function

控制與子句相關的WITHSCHEMABINDING巴貝魚行為。依預設,當使用CREATE或ALTERFUNCTION命令指定WITHSCHEMABINDING子句時,會忽略子句。

ignore

escape_hatch_schemabinding_procedure

控制與子句相關的WITHSCHEMABINDING巴貝魚行為。依預設,當使用CREATE或ALTERPROCEDURE命令指定WITHSCHEMABINDING子句時,會忽略子句。

ignore

escape_hatch_rowguidcol_column

控制建立或變更資料表時,與子ROWGUIDCOL句相關的 Babelfish 行為。

strict

escape_hatch_schemabinding_trigger

控制與子句相關的WITHSCHEMABINDING巴貝魚行為。依預設,當使用CREATE或ALTERTRIGGER命令指定WITHSCHEMABINDING子句時,會忽略子句。

ignore

escape_hatch_schemabinding_view

控制與子句相關的WITHSCHEMABINDING巴貝魚行為。依預設,當使用CREATE或ALTERVIEW命令指定WITHSCHEMABINDING子句時,會忽略子句。

ignore

escape_hatch_session_settings

控制 Babelfish 對不支援工作階段SET層級陳述式的行為。

ignore

escape_hatch_showplan_all

控制與 SET SHOWPLAN _ ALL 和相關的巴貝魚行為。SET STATISTICS PROFILE當設置為忽略時,它們的行為就像 SET BABELFISH SHOWPLAN _ SET BABELFISH _ ALL 和 _ STATISTICSPROFILE; 當設置為 strict 時,它們被默默忽略。

strict

escape_hatch_storage_on_partition

定義分割時控制 ON partition_scheme column 子句相關的 Babelfish 行為。Babelfish 目前未實作分割。

strict

escape_hatch_storage_options

在CREATE、、、ALTERDATABASE中使用的任何儲存選項上跳脫填充線INDEX。TABLE這包括定義資料LOG表、TEXTIMAGE索引和條件約束以及資料庫的儲存位置 (資料分割、檔案群組) 的子句 () ON、FILESTREAM _ON、_ON。此逸出剖面線設定適用於所有這些子句 (包括 ON [PRIMARY] 和 ON "DEFAULT「)。但以 ON partition_scheme (column) 指定資料表或索引的分割區時例外。

ignore

escape_hatch_table_hints

控制使用 WITH (...) 子句指定的資料表提示行為。

ignore

escape_hatch_unique_constraint

當設定為 strict 時,SQLServer 和 Postgre SQL 在處理索引資料行上的NULL值時,會產生模糊的語意差異,可能會引發錯誤。語義差異只會出現於不切實際的使用案例中,因此您可將此轉義剖面設定為「忽略」以避免看到錯誤。

已從下列版本淘汰:3.6.0 及更高版本,4.2.0 及更高版本

strict