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 '
di manahatch_name
'
adalah pengidentifikasi satu escape hatch atau lebih.hatch_name
hatch_name
dapat menggunakan wildcard SQL, seperti '%'.Untuk mengatur satu escape hatch atau lebih ke nilai yang ditentukan, jalankan
sp_babelfish_configure ['
. Untuk membuat pengaturan menjadi permanen di tingkat klaster, sertakan kata kuncihatch_name
' [, 'strict'|'ignore' [, 'server']]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 |
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 |
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 |
ketat |
escape_hatch_login_hashed_password |
Ketika diabaikan, menekan kesalahan untuk kata kunci |
ketat |
escape_hatch_login_misc_options |
Ketika diabaikan, menekan kesalahan untuk kata kunci lain selain |
ketat |
escape_hatch_login_old_password |
Ketika diabaikan, menekan kesalahan untuk kata kunci |
ketat |
escape_hatch_login_password_must_change |
Ketika diabaikan, menekan kesalahan untuk kata kunci |
ketat |
escape_hatch_login_password_unlock |
Ketika diabaikan, menekan kesalahan untuk kata kunci |
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 |
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 |