Mengelola penanganan kesalahan Babelfish dengan escape hatch - Amazon Aurora

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengelola penanganan kesalahan Babelfish dengan escape hatch

Babelfish meniru SQL perilaku untuk aliran kontrol dan status transaksi bila memungkinkan. Ketika Babelfish menemukan kesalahan, ia mengembalikan kode kesalahan yang mirip dengan kode kesalahan SQL Server. Jika Babelfish tidak dapat memetakan kesalahan ke kode SQL Server, ia mengembalikan kode kesalahan tetap (33557097) dan mengambil tindakan spesifik berdasarkan jenis kesalahan, sebagai berikut:

  • Untuk kesalahan waktu kompilasi, Babelfish akan melakukan rollback pada transaksi.

  • Untuk kesalahan runtime, Babelfish mengakhiri batch dan melakukan rollback pada transaksi.

  • Untuk kesalahan protokol antara klien dan server, tidak akan ada rollback pada transaksi.

Jika kode kesalahan tidak dapat dipetakan menjadi kode yang setara dan kode untuk kesalahan serupa tersedia, kode kesalahan akan dipetakan menjadi kode alternatif. Misalnya, perilaku yang menyebabkan kode SQL Server 8143 dan keduanya 8144 dipetakan. 8143

Kesalahan yang tidak dapat dipetakan tidak mematuhi konsep TRY... CATCH.

Anda dapat menggunakan @@ERROR untuk mengembalikan kode kesalahan SQL Server, atau @@PGERROR fungsi untuk mengembalikan kode SQL kesalahan Postgre. Anda juga dapat menggunakan fungsi fn_mapped_system_error_list untuk menampilkan daftar kode kesalahan yang dipetakan. Untuk informasi tentang kode SQL kesalahan Postgre, lihat situs web SQLPostgre.

Memodifikasi pengaturan escape hatch Babelfish

Untuk menangani pernyataan yang mungkin gagal, Babelfish mendefinisikan opsi tertentu yang disebut escape hatch. Escape hatch adalah opsi yang menentukan perilaku Babelfish ketika menemukan fitur atau sintaks yang tidak didukung.

Anda dapat menggunakan prosedur tersimpan sp_babelfish_configure untuk mengontrol pengaturan escape hatch. Gunakan skrip untuk mengatur escape hatch ke ignore atau strict. Jika disetel ke strict, Babelfish menampilkan kesalahan yang perlu Anda perbaiki sebelum melanjutkan.

Untuk menerapkan perubahan pada sesi saat ini dan pada tingkat klaster, sertakan kata kunci server.

Penggunaannya dapat dilihat sebagai berikut:

  • Untuk mencantumkan semua escape hatch dan statusnya, serta informasi penggunaan, jalankan sp_babelfish_configure.

  • Untuk membuat daftar penetasan escape bernama dan nilainya, untuk sesi saat ini atau di seluruh cluster, jalankan perintah sp_babelfish_configure 'hatch_name' di mana hatch_name adalah pengenal dari satu atau lebih escape hatch. hatch_name dapat menggunakan SQL wildcard, seperti '%'.

  • Untuk mengatur satu escape hatch atau lebih ke nilai yang ditentukan, jalankan sp_babelfish_configure ['hatch_name' [, 'strict'|'ignore' [, 'server']]. Untuk membuat pengaturan menjadi permanen di tingkat klaster, sertakan kata kunci server, seperti yang ditunjukkan sebagai berikut:

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

    Untuk mengaturnya hanya untuk sesi ini, jangan gunakan server.

  • Untuk mengatur ulang semua escape hatch ke nilai default-nya, jalankan sp_babelfish_configure 'default' (Babelfish versi 1.2.0 dan yang lebih tinggi).

String yang mengidentifikasi palka (atau palka) dapat mencakup SQL wildcard. Misalnya, berikut ini menetapkan semua penetasan escape sintaks ignore untuk cluster Aurora Postgre. SQL

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

Dalam tabel berikut, Anda dapat menemukan deskripsi dan nilai default untuk escape hatch Babelfish yang telah ditentukan sebelumnya.

Escape hatch Deskripsi Default
escape_hatch_checkpoint

Mengizinkan penggunaan CHECKPOINT pernyataan dalam kode prosedural, tetapi CHECKPOINT pernyataan tersebut saat ini tidak diterapkan.

abaikan

escape_hatch_constraint_name_for_default

Mengontrol perilaku Babelfish yang terkait dengan nama batasan default.

abaikan

escape_hatch_database_misc_options

Mengontrol perilaku Babelfish yang terkait dengan opsi berikut pada CREATE atau ALTERDATABASE:CONTAINMENT, DB_,CHAINING, TRUSTWORTHY _ _. PERSISTENT LOG BUFFER

abaikan

escape_hatch_for_replication

Mengontrol perilaku Babelfish yang terkait dengan FOR REPLICATION klausa [NOT] saat membuat atau mengubah tabel.

ketat

escape_hatch_fulltext

Mengontrol perilaku Babelfish yang terkait dengan FULLTEXT fitur, seperti DEFAULT _ FULLTEXT _ LANGUAGE inCREATE/, ALTER DATABASE CREATE FULLTEXTINDEX, atau sp_fulltext_database.

abaikan

escape_hatch_ignore_dup_key

Mengontrol perilaku Babelfish terkait CREATE ALTER TABLE dengan/dan. CREATE INDEX Ketika IGNORE _ DUP _ KEY =ON, memunculkan kesalahan saat disetel ke strict (default) atau mengabaikan kesalahan saat disetel ke ignore (Babelfish versi 1.2.0 dan lebih tinggi).

ketat

escape_hatch_index_clustering

Mengontrol perilaku Babelfish terkait dengan CLUSTERED atau NONCLUSTERED kata kunci untuk indeks dan PRIMARY KEY atau kendala. UNIQUE Ketika CLUSTERED diabaikan, indeks atau kendala masih NONCLUSTERED dibuat seolah-olah telah ditentukan.

abaikan

escape_hatch_index_columnstore

Mengontrol perilaku Babelfish terkait dengan klausa. COLUMNSTORE Jika Anda menentukan ignore, Babelfish membuat indeks B-tree biasa.

ketat

escape_hatch_join_hints

Mengontrol perilaku kata kunci dalam JOIN operator:LOOP,HASH,MERGE,REMOTE,REDUCE,REDISTRIBUTE,REPLICATE.

abaikan

escape_hatch_language_non_english

Mengontrol perilaku Babelfish yang terkait dengan bahasa selain bahasa Inggris untuk pesan di layar. Babelfish saat ini hanya mendukung us_english untuk pesan di layar. SETLANGUAGEmungkin menggunakan variabel yang berisi nama bahasa, sehingga bahasa sebenarnya yang disetel hanya dapat dideteksi pada waktu berjalan.

ketat

escape_hatch_login_hashed_password

Ketika diabaikan, menekan kesalahan untuk kata kunci HASHED untuk CREATE LOGIN dan ALTER LOGIN.

ketat

escape_hatch_login_misc_options

Ketika diabaikan, menekan kesalahan untuk kata kunci lain selain HASHED, MUST_CHANGE, OLD_PASSWORD, dan UNLOCK untuk CREATE LOGIN dan ALTER LOGIN.

ketat

escape_hatch_login_old_password

Ketika diabaikan, menekan kesalahan untuk kata kunci OLD_PASSWORD untuk CREATE LOGIN dan ALTER LOGIN.

ketat

escape_hatch_login_password_must_change

Ketika diabaikan, menekan kesalahan untuk kata kunci MUST_CHANGE untuk CREATE LOGIN dan ALTER LOGIN.

ketat

escape_hatch_login_password_unlock

Ketika diabaikan, menekan kesalahan untuk kata kunci UNLOCK untuk CREATE LOGIN dan ALTER LOGIN.

ketat

escape_hatch_nocheck_add_constraint

Mengontrol perilaku Babelfish terkait dengan WITH CHECK atau NOCHECK klausa untuk kendala.

ketat

escape_hatch_nocheck_existing_constraint

Mengontrol perilaku Babelfish yang terkait dengan FOREIGN KEY atau CHECK kendala.

ketat

escape_hatch_query_hints

Mengontrol perilaku Babelfish yang terkait dengan petunjuk kueri. Ketika opsi ini diatur untuk mengabaikan, server mengabaikan petunjuk yang menggunakan klausa OPTION (...) untuk menentukan aspek pemrosesan kueri. Contohnya termasuk SELECTFROM... OPTION(MERGEJOINHASH, MAXRECURSION 10)).

abaikan

escape_hatch_rowversion

Mengontrol perilaku tipe ROWVERSION dan TIMESTAMP tipe data. Untuk informasi penggunaan, lihat Menggunakan fitur Babelfish dengan implementasi terbatas.

ketat

escape_hatch_schemabinding_function

Mengontrol perilaku Babelfish terkait dengan klausa. WITH SCHEMABINDING Secara default, WITH SCHEMABINDING klausa diabaikan ketika ditentukan dengan ALTER FUNCTION perintah CREATE or.

abaikan

escape_hatch_schemabinding_procedure

Mengontrol perilaku Babelfish terkait dengan klausa. WITH SCHEMABINDING Secara default, WITH SCHEMABINDING klausa diabaikan ketika ditentukan dengan ALTER PROCEDURE perintah CREATE or.

abaikan

escape_hatch_rowguidcol_column

Mengontrol perilaku Babelfish yang terkait dengan ROWGUIDCOL klausa saat membuat atau mengubah tabel.

ketat

escape_hatch_schemabinding_trigger

Mengontrol perilaku Babelfish terkait dengan klausa. WITH SCHEMABINDING Secara default, WITH SCHEMABINDING klausa diabaikan ketika ditentukan dengan ALTER TRIGGER perintah CREATE or.

abaikan

escape_hatch_schemabinding_view

Mengontrol perilaku Babelfish terkait dengan klausa. WITH SCHEMABINDING Secara default, WITH SCHEMABINDING klausa diabaikan ketika ditentukan dengan ALTER VIEW perintah CREATE or.

abaikan

escape_hatch_session_settings

Mengontrol perilaku Babelfish terhadap pernyataan tingkat sesi yang tidak didukung. SET

abaikan

escape_hatch_showplan_all

Mengontrol perilaku Babelfish terkait dengan SET SHOWPLAN _ ALL dan. SET STATISTICS PROFILE Ketika diatur untuk mengabaikan, mereka berperilaku seperti SET BABELFISH _ SHOWPLAN _ ALL dan SET BABELFISH _ STATISTICSPROFILE; ketika diatur ke ketat, mereka diam-diam diabaikan.

ketat

escape_hatch_storage_on_partition

Mengontrol perilaku Babelfish yang terkait dengan klausa ON partition_scheme column saat mendefinisikan partisi. Babelfish saat ini tidak menerapkan partisi.

ketat

escape_hatch_storage_options

Escape hatch pada opsi penyimpanan apa pun yang digunakan dalamCREATE,, ALTER DATABASETABLE,INDEX. Ini termasuk klausa (LOG) ON, TEXTIMAGE _ON, FILESTREAM _ON yang menentukan lokasi penyimpanan (partisi, grup file) untuk tabel, indeks, dan batasan, dan juga untuk database. Pengaturan escape hatch ini berlaku untuk semua klausa ini (termasuk ON [PRIMARY] dan ON "“DEFAULT). Pengecualiannya adalah ketika partisi ditentukan untuk tabel atau indeks dengan ON partition_scheme (kolom).

abaikan

escape_hatch_table_hints

Mengontrol perilaku petunjuk tabel yang ditentukan menggunakan klausa WITH (...).

abaikan

escape_hatch_unique_constraint

Ketika diatur ke ketat, perbedaan semantik yang tidak jelas antara SQL Server dan Postgre SQL dalam menangani NULL nilai pada kolom yang diindeks dapat menimbulkan kesalahan. Perbedaan semantik hanya muncul dalam kasus penggunaan yang tidak realistis, sehingga Anda dapat mengatur escape hatch ini menjadi 'abaikan' untuk menghindari melihat kesalahan.

Usang dari versi berikut: 3.6.0 dan versi yang lebih tinggi, 4.2.0 dan versi yang lebih tinggi

ketat