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 '
di manahatch_name
'
adalah pengenal dari satu atau lebih escape hatch.hatch_name
hatch_name
dapat menggunakan SQL wildcard, 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 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 |
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 |
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 |
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 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 |
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 |