Menggunakan fitur Babelfish dengan implementasi terbatas - Amazon Aurora

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

Menggunakan fitur Babelfish dengan implementasi terbatas

Setiap versi baru Babelfish menambahkan dukungan untuk fitur yang lebih selaras dengan fungsionalitas dan perilaku T-SQL. Namun, ada beberapa fitur yang tidak didukung dan perbedaan dalam implementasi saat ini. Berikut ini, Anda dapat menemukan informasi tentang perbedaan fungsional antara Babelfish dan T-SQL, dengan beberapa solusi atau catatan penggunaan.

Pada versi 1.2.0 dari Babelfish, fitur berikut saat ini memiliki implementasi terbatas:

  • Katalog SQL Server (tampilan sistem) – Katalog sys.sysconfigures, sys.syscurconfigs, dan sys.configurations mendukung konfigurasi hanya-baca tunggal saja. Saat ini, sp_configure belum didukung. Untuk informasi selengkapnya tentang tampilan SQL Server lainnya yang diterapkan oleh Babelfish, lihat Mendapatkan informasi dari katalog sistem Babelfish.

  • Izin GRANT – GRANT…TO PUBLIC didukung, tetapi GRANT..TO PUBLIC WITH GRANT OPTION saat ini tidak didukung.

  • Rantai kepemilikan dan batasan mekanisme izin SQL Server – Di Babelfish, rantai kepemilikan SQL Server berfungsi untuk tampilan tetapi tidak untuk prosedur yang disimpan. Ini berarti bahwa prosedur harus diberikan akses eksplisit ke objek lain yang dimiliki oleh pemilik yang sama dengan prosedur panggilan. Di SQL Server, memberikan izin EXECUTE pemanggil pada prosedur cukup untuk memanggil objek lain yang dimiliki oleh pemilik yang sama. Di Babelfish, pemanggil juga harus diberikan izin pada objek yang diakses oleh prosedur.

  • Resolusi referensi objek yang tidak memenuhi syarat (tanpa nama skema) – Ketika objek SQL (prosedur, tampilan, fungsi atau pemicu) mereferensikan objek tanpa memenuhi syarat dengan nama skema, SQL Server menyelesaikan nama skema objek dengan menggunakan nama skema objek SQL tempat referensi terjadi. Saat ini, Babelfish memiliki penyelesaian yang berbeda, dengan menggunakan skema default dari pengguna basis data yang menjalankan prosedur.

  • Perubahan, sesi, dan koneksi skema default – Jika pengguna mengubah skema defaultnya dengan ALTER USER...WITH DEFAULT SCHEMA, perubahan akan segera berlaku di sesi tersebut. Namun, untuk sesi lain yang saat ini terhubung milik pengguna yang sama, waktunya berbeda, sebagai berikut:

    • Untuk SQL Server: – Perubahan akan langsung berlaku di semua koneksi lain untuk pengguna ini.

    • Untuk Babelfish: – Perubahan hanya berlaku di koneksi baru untuk pengguna ini.

  • Implementasi tipe data ROWVERSION dan TIMESTAMP dan pengaturan escape hatch – Tipe data ROWVERSION dan TIMESTAMP sekarang didukung di Babelfish. Untuk menggunakan ROWVERSION atau TIMESTAMP di Babelfish, Anda harus mengubah pengaturan untuk escape hatch babelfishpg_tsql.escape_hatch_rowversion dari default (strict) menjadi ignore. Implementasi Babelfish dari tipe data ROWVERSION dan TIMESTAMP sebagian besar identik secara semantik dengan SQL Server, dengan pengecualian berikut:

    • Fungsi @@DBTS bawaan berperilaku mirip dengan SQL Server, tetapi dengan perbedaan kecil. Daripada mengembalikan nilai yang terakhir digunakan untuk SELECT @@DBTS, Babelfish menghasilkan stempel waktu baru, karena mesin basis data PostgreSQL yang mendasarinya dan implementasi kontrol konkurensi multi-versi (MVCC).

    • Di SQL Server, setiap baris yang disisipkan atau diperbarui mendapatkan nilai ROWVERSION/TIMESTAMP yang unik. Di Babelfish, setiap baris yang disisipkan diperbarui oleh pernyataan yang sama diberi nilai ROWVERSION/TIMESTAMP yang sama.

      Misalnya, ketika pernyataan UPDATE atau pernyataan INSERT-SELECT memengaruhi beberapa baris, di SQL Server, semua baris yang terpengaruh memiliki nilai yang berbeda di kolom ROWVERSION/TIMESTAMP masing-masing. Dalam Babelfish (PostgreSQL), baris memiliki nilai yang sama.

    • Di SQL Server, saat Anda membuat tabel baru dengan SELECT-INTO, Anda dapat mentransmisikan nilai eksplisit (seperti NULL) ke kolom ROWVERSION/TIMESTAMP yang akan dibuat. Saat Anda melakukan hal yang sama di Babelfish, nilai ROWVERSION/TIMESTAMP yang sebenarnya ditetapkan ke setiap baris di tabel baru untuk Anda, oleh Babelfish.

    Perbedaan kecil dalam tipe data ROWVERSION/TIMESTAMP ini seharusnya tidak berdampak buruk pada aplikasi yang berjalan di Babelfish.

Pembuatan skema, kepemilikan, dan izin – Izin untuk membuat dan mengakses objek dalam skema yang dimiliki oleh pengguna non-DBO (menggunakan CREATE SCHEMA schema name AUTHORIZATION user name) berbeda untuk pengguna SQL Server dan Babelfish non-DBO, seperti yang ditunjukkan pada tabel berikut:

Pengguna basis data (non-DBO) yang memiliki skema dapat melakukan hal berikut: SQL Server Babelfish

Buat objek dalam skema tanpa pemberian izin tambahan oleh DBO?

Tidak

Ya

Akses objek yang dibuat oleh DBO dalam skema tanpa pemberian izin tambahan?

Ya

Tidak