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 perilaku SQL untuk aliran kontrol dan status transaksi bila memungkinkan. Ketika Babelfish menemukan kesalahan, layanan ini menampilkan kode kesalahan yang mirip dengan kode kesalahan SQL Server. Jika Babelfish tidak dapat memetakan kesalahan menjadi kode SQL Server, layanan ini menampilkan 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 8144 dipetakan menjadi 8143.

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

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

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 mencantmukan escape hatch bernama beserta nilainya, untuk sesi saat ini atau tingkat klaster, jalankan perintah sp_babelfish_configure 'hatch_name' di mana hatch_name adalah pengidentifikasi satu escape hatch atau lebih. hatch_name dapat menggunakan wildcard SQL, 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 hatch dapat mencakup wildcard SQL. Misalnya, yang berikut ini menetapkan semua escape hatch sintaks ke ignore untuk klaster Aurora PostgreSQL.

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

Memungkinkan penggunaan pernyataan CHECKPOINT dalam kode prosedural, tetapi pernyataan CHECKPOINT 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 terkait dengan opsi berikut pada CREATE atau ALTER DATABASE: CONTAINMENT, DB_CHAINING, TRUSTWORTHY, PERSISTENT_LOG_BUFFER.

abaikan

escape_hatch_for_replication

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

ketat

escape_hatch_fulltext

Mengontrol perilaku Babelfish yang terkait dengan fitur FULLTEXT, seperti DEFAULT_FULLTEXT_LANGUAGE dalam CREATE/ALTER DATABASE, CREATE FULLTEXT INDEX, atau sp_fulltext_database.

abaikan

escape_hatch_ignore_dup_key

Mengontrol perilaku Babelfish yang terkait dengan CREATE/ALTER TABLE 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 yang terkait dengan kata kunci CLUSTERED atau NONCLUSTERED untuk indeks dan kendala PRIMARY KEY atau UNIQUE. Ketika CLUSTERED diabaikan, indeks atau kendala masih dibuat seolah-olah NONCLUSTERED ditentukan.

abaikan

escape_hatch_index_columnstore

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

ketat

escape_hatch_join_hints

Mengontrol perilaku kata kunci dalam operator JOIN: 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. SET LANGUAGE mungkin menggunakan variabel yang berisi nama bahasa, sehingga bahasa sebenarnya yang disetel hanya dapat dideteksi pada runtime.

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 yang terkait dengan klausa WITH CHECK atau NOCHECK untuk kendala.

ketat

escape_hatch_nocheck_existing_constraint

Mengontrol perilaku Babelfish yang terkait dengan klausa FOREIGN KEY atau CHECK untuk 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 SELECT FROM ... OPTION(MERGE JOIN HASH, MAXRECURSION 10)).

abaikan

escape_hatch_rowversion

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

ketat

escape_hatch_schemabinding_function

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

abaikan

escape_hatch_schemabinding_procedure

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

abaikan

escape_hatch_rowguidcol_column

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

ketat

escape_hatch_schemabinding_trigger

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

abaikan

escape_hatch_schemabinding_view

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

abaikan

escape_hatch_session_settings

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

abaikan

escape_hatch_showplan_all

Mengontrol perilaku Babelfish yang terkait dengan SET SHOWPLAN_ALL dan SET STATISTICS PROFILE. Ketika diatur untuk mengabaikan, perilakunya seperti SET BABELFISH_SHOWPLAN_ALL dan SET BABELFISH_STATISTICS PROFILE; ketika disetel ke ketat, pengabaiannya dilakukan secara diam-diam.

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 dalam CREATE, ALTER DATABASE, TABLE, INDEX. Ini termasuk klausa (LOG) ON, TEXTIMAGE_ON, FILESTREAM_ON yang menentukan lokasi penyimpanan (partisi, grup file) untuk tabel, indeks, dan kendala, dan juga untuk basis data. 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 PostgreSQL dalam menangani nilai NULL 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.

ketat