

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

# Memahami konfigurasi dan arsitektur Babelfish
<a name="babelfish-understanding-overview-howitworks"></a>

Anda mengelola klaster DB Edisi yang Kompatibel dengan Aurora PostgreSQL yang menjalankan Babelfish seperti halnya klaster DB Aurora. Artinya, Anda mendapat manfaat dari skalabilitas, ketersediaan tinggi dengan dukungan failover, dan replikasi default yang disediakan oleh klaster DB Aurora. Untuk mempelajari lebih lanjut tentang kapabilitas ini, lihat [Mengelola performa dan penskalaan untuk klaster DB Aurora](Aurora.Managing.Performance.md), [Ketersediaan yang tinggi untuk Amazon Aurora](Concepts.AuroraHighAvailability.md), dan [Replikasi dengan Amazon Aurora](Aurora.Replication.md). Anda juga memiliki akses ke banyak AWS alat dan utilitas lain, termasuk yang berikut ini:
+ Amazon CloudWatch adalah layanan pemantauan dan observabilitas yang memberi Anda data dan wawasan yang dapat ditindaklanjuti. Untuk informasi selengkapnya, lihat [Memantau Amazon Aurora dengan Amazon CloudWatch](monitoring-cloudwatch.md).
+ Wawasan Performa adalah fitur penyetelan dan pemantauan performa basis data yang membantu Anda menilai beban basis data dengan cepat. Untuk mempelajari selengkapnya, lihat [Memantau muatan DB dengan Wawasan Performa di Amazon Aurora](USER_PerfInsights.md).
+ Basis data global Aurora mencakup beberapa Wilayah AWS, memungkinkan pembacaan global latensi rendah dan memberikan pemulihan cepat dari pemadaman langka yang mungkin memengaruhi keseluruhan. Wilayah AWS Untuk informasi selengkapnya, lihat [Menggunakan Database Global Amazon Aurora](aurora-global-database.md).
+ Penambalan perangkat lunak otomatis menjaga database Anda up-to-date dengan keamanan terbaru dan tambalan fitur saat tersedia.
+ Peristiwa Amazon RDS memberi tahu Anda melalui email atau pesan SMS tentang peristiwa basis data penting, seperti failover otomatis. Untuk informasi selengkapnya, lihat [](working-with-events.md). 

Berikut ini, Anda dapat mempelajari tentang arsitektur Babelfish dan bagaimana basis data SQL Server yang Anda migrasi ditangani oleh Babelfish. Saat membuat klaster DB Babelfish, Anda perlu membuat beberapa keputusan lebih awal tentang satu basis data atau beberapa basis data, kolasi, dan detail lainnya. 

**Topics**
+ [Arsitektur Babelfish](babelfish-architecture.md)
+ [Pengaturan grup parameter klaster DB untuk Babelfish](babelfish-configuration.md)
+ [Memahami Kolasi di Babelfish untuk Aurora Postgre SQL](babelfish-collations.md)
+ [Mengelola penanganan kesalahan Babelfish dengan escape hatch](babelfish-strict.md)

# Arsitektur Babelfish
<a name="babelfish-architecture"></a>

Saat Anda membuat klaster Aurora PostgreSQL dengan Babelfish diaktifkan, Aurora menyediakan klaster dengan basis data PostgreSQL bernama `babelfish_db`. Basis data ini adalah tempat semua objek dan struktur SQL Server yang dimigrasi berada. 

**catatan**  
Dalam klaster Aurora PostgreSQL, nama basis data `babelfish_db` dicadangkan untuk Babelfish. Membuat basis data "babelfish\$1db" Anda sendiri pada klaster Babelfish DB mencegah Aurora berhasil menyediakan Babelfish. 

Saat Anda terhubung ke port TDS, sesi ditempatkan pada basis data `babelfish_db`. Dari T-SQL, strukturnya terlihat mirip dengan kondisi saat terhubung ke instans SQL Server. Anda dapat melihat basis data `master`, `msdb`, dan `tempdb`, serta katalog `sys.databases`. Anda dapat membuat basis data pengguna tambahan dan beralih antar-basis data dengan pernyataan USE. Ketika Anda membuat basis data pengguna SQL Server, basis data tersebut akan diratakan ke dalam basis data PostgreSQL `babelfish_db`. Basis data Anda mempertahankan sintaks lintas-basis data dan semantik yang setara atau mirip dengan yang disediakan oleh SQL Server.

## Menggunakan Babelfish dengan satu atau beberapa basis data
<a name="babelfish-single_vs_multi_db"></a>

Saat Anda membuat klaster Aurora PostgreSQL untuk digunakan dengan Babelfish, Anda memilih antara menggunakan satu basis data SQL Server atau beberapa basis data SQL Server sekaligus. Pilihan Anda memengaruhi bagaimana nama skema SQL Server di dalam basis data `babelfish_db` muncul dari Aurora PostgreSQL. Mode migrasi disimpan dalam parameter `migration_mode`. Anda tidak boleh mengubah parameter ini setelah membuat klaster karena Anda bisa kehilangan akses ke semua objek SQL yang telah dibuat sebelumnya.

Dalam mode basis data tunggal, nama skema basis data SQL Server tetap sama dalam basis data `babelfish_db` PostgreSQL. Jika Anda memilih untuk hanya memigrasikan basis data tunggal, nama skema basis data pengguna yang dimigrasi dapat dirujuk di PostgreSQL dengan nama yang sama seperti di SQL Server. Misalnya, skema `dbo` dan `smith` berada dalam basis data `dbA` *.* 

![\[\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/AuroraUserGuide/images/babelfish_single_db_mode.png)


Saat menghubungkan melalui TDS, Anda dapat menjalankan `USE dba` untuk melihat skema `dbo` dan `dev` dari T-SQL, seperti yang Anda lakukan di SQL Server. Nama skema yang tidak berubah juga terlihat dari PostgreSQL.

Dalam modus multi-basis data, nama skema basis data pengguna menjadi `dbname_schemaname` ketika diakses dari PostgreSQL. Nama skema tetap sama ketika diakses dari T-SQL.

![\[\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/AuroraUserGuide/images/babelfish_multi_db_mode.png)


Seperti yang ditunjukkan pada gambar, mode multi-basis data dan mode basis data tunggal sama dengan SQL Server saat menghubungkan melalui port TDS dan menggunakan T-SQL. Misalnya, `USE dbA` mencantumkan skema `dbo` dan `dev` seperti halnya di SQL Server. Nama skema yang dipetakan, seperti `dba_dbo` dan `dba_dev`, terlihat dari PostgreSQL.

Setiap basis data masih berisi skema Anda. Nama setiap basis data ditambahkan ke nama skema SQL Server, menggunakan garis bawah sebagai pembatas, misalnya:
+ `dba` berisi `dba_dbo` dan `dba_dev`.
+ `dbb` berisi `dbb_dbo` dan `dbb_test`.
+ `dbc` berisi `dbc_dbo` dan `dbc_prod`.

Di dalam basis data `babelfish_db`, pengguna T-SQL masih perlu menjalankan `USE dbname` untuk mengubah konteks basis data, sehingga tampilan dan nuansanya tetap mirip dengan SQL Server.

## Memilih mode migrasi
<a name="babelfish-choosing_single_vs_multi"></a>

Setiap mode migrasi memiliki kelebihan dan kekurangan. Pilih mode migrasi berdasarkan jumlah basis data pengguna milik Anda, dan rencana migrasi Anda. Setelah Anda membuat klaster untuk digunakan dengan Babelfish, Anda tidak boleh mengubah mode migrasi karena Anda mungkin akan kehilangan akses ke semua objek SQL yang dibuat sebelumnya. Saat memilih mode migrasi, pertimbangkan persyaratan basis data dan klien pengguna Anda.

Saat Anda membuat klaster untuk digunakan dengan Babelfish, Aurora PostgreSQL membuat basis data sistem, `master` dan `tempdb`. Jika Anda membuat atau memodifikasi objek dalam basis data sistem (`master` atau `tempdb`), pastikan untuk membuat ulang objek tersebut di klaster baru. Tidak seperti SQL Server, Babelfish tidak menginisialisasi ulang `tempdb` setelah klaster mem-boot ulang.

Gunakan mode migrasi basis data tunggal dalam kasus berikut:
+ Jika Anda memigrasi satu basis data SQL Server. Dalam mode basis data tunggal, nama skema yang dimigrasi saat diakses dari PostgreSQL identik dengan nama skema SQL Server asli. Hal ini akan mengurangi perubahan kode pada kueri SQL yang ada jika Anda ingin mengoptimalkannya untuk dijalankan dengan koneksi PostgreSQL.
+ Jika tujuan akhir Anda adalah migrasi lengkap ke Aurora PostgreSQL asli. Sebelum bermigrasi, konsolidasikan skema Anda ke dalam satu skema (`dbo`) dan kemudian migrasikan ke dalam satu klaster untuk mengurangi perubahan yang diperlukan.

Gunakan beberapa mode migrasi basis data dalam kasus berikut:
+ Jika Anda menginginkan pengalaman SQL Server default dengan beberapa basis data pengguna dalam instans yang sama.
+ Jika beberapa basis data pengguna perlu dimigrasikan bersama.

# Pengaturan grup parameter klaster DB untuk Babelfish
<a name="babelfish-configuration"></a>

Saat Anda membuat klaster DB Aurora PostgreSQL dan memilih **Aktifkan Babelfish**, grup parameter klaster DB akan dibuat untuk Anda secara otomatis jika Anda memilih **Buat baru**. Grup parameter klaster DB ini didasarkan pada grup parameter klaster Aurora PostgreSQL DB untuk versi Aurora PostgreSQL yang dipilih untuk instalasi, misalnya, Aurora PostgreSQL versi 14. Grup ini dinamai menggunakan pola umum berikut: 

```
custom-aurora-postgresql14-babelfish-compat-3
```

Anda dapat mengubah pengaturan berikut selama proses pembuatan klaster tetapi beberapa di antaranya tidak dapat diubah setelah disimpan di grup parameter kustom, jadi pilih dengan cermat:
+ Basis data tunggal atau Multibasis data
+ Lokal kolasi default
+ Nama kolasi
+ Grup parameter DB

Untuk menggunakan klaster Aurora PostgreSQL DB versi 13 atau grup parameter yang lebih tinggi, edit grup dan atur parameter `babelfish_status` ke `on`. Tentukan opsi Babelfish sebelum membuat klaster Aurora PostgreSQL Anda. Untuk mempelajari selengkapnya, lihat [](USER_WorkingWithParamGroups.md).

Parameter berikut mengontrol preferensi Babelfish. Kecuali dinyatakan lain dalam Deskripsi, parameter dapat dimodifikasi. Nilai default disertakan dalam deskripsi. Untuk melihat nilai yang diizinkan untuk parameter apa pun, lakukan hal berikut: 

**catatan**  
Ketika Anda mengaitkan grup parameter DB baru dengan instans DB, parameter statis dan dinamis yang dimodifikasi akan diterapkan hanya setelah instans DB di-boot ulang. Namun, jika Anda memodifikasi parameter dinamis dalam grup parameter DB setelah Anda mengaitkannya dengan instans DB, perubahan ini diterapkan segera tanpa boot ulang.

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon RDS di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Pilih **Grup parameter** dari menu navigasi.

1. Pilih grup parameter klaster DB `default.aurora-postgresql14` dari daftar.

1. Masukkan nama parameter di kolom pencarian. Misalnya, masukkan `babelfishpg_tsql.default_locale` di kolom pencarian untuk menampilkan parameter ini dan nilai default-nya serta pengaturan yang diizinkan. 
**catatan**  
Basis data global Babelfish untuk Aurora PostgreSQL bekerja di wilayah sekunder hanya jika parameter berikut dihidupkan di wilayah tersebut.


| Parameter | Deskripsi | Tipe Penerapan | Dapat Dimodifikasi | 
| --- | --- | --- | --- | 
| babelfishpg\$1tsql.apg\$1enable\$1correlated\$1scalar\$1transform | Memungkinkan perencana untuk mengubah subquery skalar berkorelasi di Babelfish. (Default: on) (Diijinkan: on, off)  | dinamis | true | 
| babelfishpg\$1tsql.apg\$1enable\$1subquery\$1cache | Mengaktifkan penggunaan cache untuk subquery skalar berkorelasi di Babelfish. (Default: on) (Diijinkan: on, off)  | dinamis | true | 
| babelfishpg\$1tds.tds\$1default\$1numeric\$1scale | Menetapkan skala default tipe numerik yang akan dikirim dalam metadata kolom TDS jika mesin tidak menentukannya. (Default: 8) (Diizinkan: 0–38)  | dinamis | true | 
| babelfishpg\$1tds.tds\$1default\$1numeric\$1precision | Integer yang menetapkan presisi default tipe numerik yang akan dikirim dalam metadata kolom TDS jika mesin tidak menentukannya. (Default: 38) (Diizinkan: 1–38) | dinamis | true | 
| babelfishpg\$1tds.tds\$1default\$1packet\$1size | Integer yang menetapkan ukuran paket default untuk menghubungkan klien SQL Server. (Default: 4096) (Diizinkan: 512–32767) | dinamis | true | 
| babelfishpg\$1tds.tds\$1default\$1protocol\$1version | Integer yang menetapkan versi protokol TDS default untuk menghubungkan klien. (Default: DEFAULT) (Diijinkan: TDSv7 .0, TDSv7 .1, TDSv7 .1.1, TDSv7 .2, TDSv7 .3A, .3B, .4, DEFAULT) TDSv7 TDSv7 | dinamis | true | 
| babelfishpg\$1tds.default\$1server\$1name | String yang mengidentifikasi nama default server Babelfish. (Default: Microsoft SQL Server) (Diizinkan: null) | dinamis | true | 
| babelfishpg\$1tds.tds\$1debug\$1log\$1level | Integer yang menetapkan tingkat pencatatan log di TDS; 0 mematikan pencatatan log. (Default: 1) (Diizinkan: 0, 1, 2, 3) | dinamis | true | 
| babelfishpg\$1tds.listen\$1addresses | String yang menetapkan nama host atau alamat IP atau alamat untuk mendengarkan TDS aktif. Parameter ini tidak dapat dimodifikasi setelah klaster DB Babelfish dibuat. (Default: \$1) (Diizinkan: null)  | – | false | 
| babelfishpg\$1tds.port | Integer yang menentukan port TCP yang digunakan untuk permintaan dalam sintaks SQL Server. (Default: 1433) (Diizinkan: 1–65535) | statis | true | 
| babelfishpg\$1tds.tds\$1ssl\$1encrypt | Boolean yang mengaktifkan (0) atau menonaktifkan (1) enkripsi untuk data yang melintasi port pendengar TDS. Untuk informasi detail cara menggunakan SSL untuk koneksi klien, lihat [Pengaturan SSL Babelfish dan koneksi klien](#babelfish-ssl). (Default: 0) (Diizinkan: 0, 1) | dinamis | true | 
| babelfishpg\$1tds.tds\$1ssl\$1max\$1protocol\$1version | String yang menentukan versi SSL/TLS protokol tertinggi untuk digunakan untuk sesi TDS. (Default: 'TLSv1.2') (Diijinkan:' ',' TLSv1 TLSv1 .1', '.2') TLSv1 | dinamis | true | 
| babelfishpg\$1tds.tds\$1ssl\$1min\$1protocol\$1version | String yang menentukan versi SSL/TLS protokol minimum yang akan digunakan untuk sesi TDS. (Default: 'TLSv1.2' dari Aurora PostgreSQL versi 16,' 'untuk TLSv1 versi yang lebih lama dari Aurora PostgreSQL versi 16) (Diizinkan:' ',' .1', '.2') TLSv1 TLSv1 TLSv1 | dinamis | true | 
| babelfishpg\$1tds.unix\$1socket\$1directories | String yang mengidentifikasi direktori soket Unix TDS. Parameter ini tidak dapat dimodifikasi setelah klaster DB Babelfish dibuat. (Default: /tmp) (Diizinkan: null) | – | false | 
| babelfishpg\$1tds.unix\$1socket\$1group | String yang mengidentifikasi grup soket Unix server TDS. Parameter ini tidak dapat dimodifikasi setelah klaster DB Babelfish dibuat. (Default: rdsdb) (Diizinkan: null) | – | false | 
| babelfishpg\$1tsql.default\$1locale |  Sebuah string yang menentukan lokal default yang digunakan untuk koleksi Babelfish. Lokal default hanya lokal dan tidak menyertakan kualifikasi apa pun. Tetapkan parameter ini saat Anda menyediakan klaster DB Babelfish. Setelah klaster DB disediakan, perubahan pada parameter ini diabaikan. (Default: en\$1US) (Diizinkan: Lihat [tabel](babelfish-collations.md))   | statis | true | 
| babelfishpg\$1tsql.migration\$1mode |  Daftar yang tidak dapat dimodifikasi yang menentukan dukungan untuk basis data satu atau beberapa pengguna. Tetapkan parameter ini saat Anda menyediakan klaster DB Babelfish. Setelah klaster DB disediakan, Anda tidak dapat mengubah nilai parameter ini. (Default: multi-db dari Aurora PostgreSQL versi 16, single-db untuk versi yang lebih lama dari Aurora PostgreSQL versi 16) (Diizinkan: single-db, multi-db, null)  | statis | true | 
| babelfishpg\$1tsql.server\$1collation\$1name |  String yang menentukan nama pemeriksaan yang digunakan untuk tindakan tingkat server. Tetapkan parameter ini saat Anda menyediakan klaster DB Babelfish. Setelah klaster DB disediakan, jangan ubah nilai parameter ini. (Default: bbf\$1unicode\$1general\$1ci\$1as) (Diizinkan: Lihat [tabel](babelfish-collations.md))  | statis | true | 
| babelfishpg\$1tsql.version |  Sebuah string yang menetapkan output dari variabel @@VERSION. Jangan ubah nilai ini untuk klaster DB Aurora PostgreSQL. (Default: null) (Diizinkan: default)  | dinamis | true | 
| rds.babelfish\$1status | String yang menetapkan status fungsionalitas Babelfish. Ketika parameter ini diatur ke `datatypesonly`, Babelfish dinonaktifkan tetapi tipe data SQL Server masih tersedia. (Default: nonaktif) (Diizinkan: aktif, nonaktif, khusus tipe data) | statis | true | 
| unix\$1socket\$1permissions | Integer yang menetapkan izin soket Unix server TDS. Parameter ini tidak dapat dimodifikasi setelah klaster DB Babelfish dibuat. (Default: 0700) (Diizinkan: 0–511) | – | false | 

## Pengaturan SSL Babelfish dan koneksi klien
<a name="babelfish-ssl"></a>

Untuk memerlukan SSL/TLS koneksi ke Babelfish Anda untuk klaster DB PostgreSQL Aurora, gunakan parameternya. `rds.force_ssl`
+ Untuk memerlukan SSL/TLS koneksi, atur nilai `rds.force_ssl` parameter ke 1 (on).
+ Untuk mematikan SSL/TLS koneksi yang diperlukan, atur nilai `rds.force_ssl` parameter ke 0 (off).

Nilai default parameter ini tergantung pada versi Aurora PostgreSQL:
+ Untuk Aurora PostgreSQL versi 17 dan yang lebih baru: Nilai default adalah 1 (on).
+ Untuk Aurora PostgreSQL versi 16 dan yang lebih lama: Nilai default adalah 0 (off).

**catatan**  
Saat Anda melakukan upgrade versi mayor dari Aurora PostgreSQL versi 16 atau versi sebelumnya ke versi 17 atau yang lebih baru, nilai default parameter berubah dari 0 (off) menjadi 1 (on). Perubahan ini dapat menyebabkan kegagalan konektivitas untuk aplikasi yang tidak dikonfigurasi untuk SSL. Anda dapat kembali ke perilaku default sebelumnya dengan menyetel parameter ini ke 0 (off).

Untuk detail spesifik pengemudi, lihat. [Menghubungkan ke klaster DB Babelfish](babelfish-connect.md)

Ketika klien terhubung ke port TDS (default `1433`), Babelfish membandingkan pengaturan Secure Sockets Layer (SSL) yang dikirim selama jabat tangan klien ke pengaturan parameter Babelfish SSL (`tds_ssl_encrypt`). Babelfish kemudian menentukan apakah koneksi diizinkan. Jika koneksi diizinkan, perilaku enkripsi diberlakukan atau tidak, tergantung pada pengaturan parameter Anda dan dukungan untuk enkripsi yang ditawarkan oleh klien.

Tabel berikut menunjukkan bagaimana Babelfish berperilaku untuk setiap kombinasi.


| Pengaturan SSL Klien | Pengaturan SSL Babelfish | rds.force\$1ssl | Koneksi diizinkan? | Nilai dikembalikan ke klien | 
| --- | --- | --- | --- | --- | 
| ENCRYPT\$1ON | Setiap | Setiap | Diizinkan, seluruh koneksi dienkripsi | ENCRYPT\$1ON | 
| ENCRYPT\$1OFF | tds\$1ssl\$1encrypt=1 | Setiap | Diizinkan, seluruh koneksi dienkripsi | ENCRYPT\$1REQ | 
| ENCRYPT\$1OFF | tds\$1ssl\$1encrypt=0 | rds.force\$1ssl=0 | Diizinkan, paket login dienkripsi | ENCRYPT\$1OFF | 
| ENCRYPT\$1OFF | tds\$1ssl\$1encrypt=0 | rds.force\$1ssl=1 | Tidak, koneksi ditutup | ENCRYPT\$1OFF | 
| ENCRYPT\$1NOT\$1SUP | tds\$1ssl\$1encrypt=0 | rds.force\$1ssl=0 | Ya | ENCRYPT\$1NOT\$1SUP | 
| ENCRYPT\$1NOT\$1SUP | tds\$1ssl\$1encrypt=1 | Setiap | Tidak, koneksi ditutup  | ENCRYPT\$1REQ | 
| ENCRYPT\$1NOT\$1SUP | tds\$1ssl\$1encrypt=0 | rds.force\$1ssl=1 | Tidak, koneksi ditutup | ENCRYPT\$1NOT\$1SUP | 
| ENCRYPT\$1CLIENT\$1CERT | Setiap | Setiap | Tidak, koneksi ditutup | Tidak didukung | 

# Memahami Kolasi di Babelfish untuk Aurora Postgre SQL
<a name="babelfish-collations"></a>

Saat Anda membuat cluster Aurora Postgre SQL DB dengan Babelfish, Anda memilih pemeriksaan untuk data Anda. Sebuah *kolasi* menentukan urutan dan pola bit yang menghasilkan teks atau karakter dalam bahasa manusia tertulis tertentu. Kolasi mencakup aturan yang membandingkan data untuk set pola bit tertentu. Kolasi terkait dengan lokalisasi. Lokal yang berbeda memengaruhi pemetaan karakter, urutan, dan sejenisnya. Atribut kolasi tercermin dalam nama berbagai kolasi. Untuk mengetahui informasi atribut, lihat [Babelfish collation attributes table](#bfish-collation-attributes-table). 

Babelfish memetakan koleksi SQL Server ke koleksi sebanding yang disediakan oleh Babelfish. Babelfish menentukan kolasi Unicode dengan urutan dan perbandingan string yang sensitif secara budaya. Babelfish juga menyediakan cara untuk menerjemahkan koleksi di SQL Server DB Anda ke koleksi Babelfish yang paling cocok. Kolasi khusus lokal disediakan untuk berbagai bahasa dan wilayah. 

Beberapa kolasi menentukan halaman kode yang sesuai dengan pengodean sisi klien. Babelfish secara otomatis menerjemahkan dari pengodean server ke pengodean klien bergantung pada kolasi setiap kolom output. 

Babelfish mendukung kolasi yang tercantum dalam [Babelfish supported collations table](#bfish-collations-table). Babelfish memetakan koleksi SQL Server ke koleksi sebanding yang disediakan oleh Babelfish. 

Babelfish menggunakan pustaka pengumpulan Komponen Internasional untuk Unicode () versi 153.80. ICU Untuk informasi selengkapnya tentang ICU susunan, lihat [Pengumpulan dalam dokumentasi](https://unicode-org.github.io/icu/userguide/collation/). ICU Untuk mempelajari lebih lanjut tentang Postgre SQL dan pemeriksaan, lihat Collation [Support](https://www.postgresql.org/docs/current/collation.html) di dokumentasi Postgre. SQL

**Topics**
+ [Parameter klaster DB yang mengontrol kolasi dan lokal](#babelfish-collations.parameters)
+ [Kolasi deterministik dan nondeterministik di Babelfish](#babelfish-collations.deterministic-nondeterministic)
+ [Kolasi didukung pada tingkat database di Babelfish](#babelfish-collations.database-level)
+ [Server dan Objek Collations di Babelfish](#babelfish-collations.reference-tables-supported-collations)
+ [Perilaku Collation default di Babelfish](#babelfish-collations-default)
+ [Mengelola kolasi](collation.managing.md)
+ [Batasan kolasi dan perbedaan perilaku](collation.limitations.md)

## Parameter klaster DB yang mengontrol kolasi dan lokal
<a name="babelfish-collations.parameters"></a><a name="collation-related-parameters"></a>

Parameter berikut memengaruhi perilaku kolasi. 

**babelfishpg\$1tsql.default\$1locale**  
Parameter ini menentukan lokal default yang digunakan oleh kolasi. Parameter ini digunakan dalam kombinasi dengan atribut yang tercantum dalam [Babelfish collation attributes table](#bfish-collation-attributes-table) untuk menyesuaikan kolasi untuk bahasa dan wilayah tertentu. Nilai default untuk parameter ini adalah `en-US`.  
Lokal default berlaku untuk semua nama pemeriksaan Babelfish yang dimulai dengan "BBF" dan untuk semua kumpulan SQL Server yang dipetakan ke kumpulan Babelfish. Mengubah pengaturan untuk parameter ini pada klaster DB Babelfish yang ada tidak memengaruhi lokal kolasi yang ada. Untuk daftar kolasi, lihat [Babelfish supported collations table](#bfish-collations-table). 

**babelfishpg\$1tsql.server\$1collation\$1name**  
Parameter ini menentukan pemeriksaan default untuk server (Aurora Postgre SQL DB cluster instance) dan database. Nilai default-nya adalah `sql_latin1_general_cp1_ci_as`. Harus `server_collation_name` berupa `CI_AS` pemeriksaan karena dalam T-SQL, pemeriksaan server menentukan bagaimana pengidentifikasi dibandingkan.  
Saat Anda membuat klaster DB Babelfish, Anda memilih **Nama kolasi** dari daftar yang dapat dipilih. Ini termasuk kolasi yang tercantum dalam [Babelfish supported collations table](#bfish-collations-table). Jangan memodifikasi `server_collation_name` setelah basis data Babelfish dibuat.

Pengaturan yang Anda pilih saat membuat klaster Babelfish untuk Aurora Postgre SQL DB disimpan dalam grup parameter cluster DB yang terkait dengan cluster untuk parameter ini dan mengatur perilaku koleksinya.

## Kolasi deterministik dan nondeterministik di Babelfish
<a name="babelfish-collations.deterministic-nondeterministic"></a>

Babelfish mendukung kolasi deterministik dan nondeterministik:
+ *Kolasi deterministik* mengevaluasi karakter yang memiliki urutan byte identik sebagai sama. Itu berarti itu `x` dan `X` tidak sama dalam kolasi deterministik. Kolasi deterministik dapat berupa peka huruf besar/kecil (CS) dan peka karakter beraksen (AS).
+ *Kolasi nondeterministik* tidak membutuhkan kecocokan yang identik. Kolasi nondeterministik mengevaluasi `x` dan `X` sebagai nilai yang setara. Kumpulan nondeterministik adalah case-insensitive (CI) atau aksen-insensitif (AI), atau keduanya.

Pada tabel berikut, Anda dapat menemukan beberapa perbedaan perilaku antara Babelfish dan Postgre SQL saat menggunakan kumpulan nondeterministik.


| Babelfish | Postgre SQL | 
| --- | --- | 
|  Mendukung LIKE klausa untuk kumpulan CI\$1AS.  |  Tidak mendukung LIKE klausa pada kumpulan nondeterministik.  | 
|  Mendukung LIKE klausa hanya pada kumpulan AI berikut dari Babelfish versi 4.2.0: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/AuroraUserGuide/babelfish-collations.html)  |  Tidak mendukung LIKE klausa pada kumpulan nondeterministik.  | 

Untuk daftar batasan dan perbedaan perilaku lain untuk Babelfish dibandingkan dengan SQL Server dan SQL Postgre, lihat. [Batasan kolasi dan perbedaan perilaku](collation.limitations.md) 

Babelfish dan SQL Server mengikuti konvensi penamaan untuk koleksi yang menggambarkan atribut pemeriksaan, seperti yang ditunjukkan pada tabel berikut.<a name="bfish-collation-attributes-table"></a>


| Atribut | Deskripsi | 
| --- | --- | 
| AI | Tidak peka karakter beraksen. | 
| AS | Peka karakter beraksen. | 
| BIN2 | BIN2meminta data untuk diurutkan dalam urutan titik kode. Urutan titik kode unicode adalah urutan karakter yang sama untuk pengkodean UTF -8, UTF -16, dan UCS -2. Urutan titik kode adalah kolasi deterministik cepat. | 
| CI | Tidak peka huruf besar/kecil. | 
| CS | Peka huruf besar/kecil. | 
| PREF | Untuk mengurutkan huruf besar sebelum huruf kecil, gunakan pemeriksaan. PREF Jika perbandingan tidak peka huruf besar/kecil, versi huruf besar akan diurutkan sebelum versi huruf kecil, jika tidak ada perbedaan lain. ICUPustaka mendukung preferensi huruf besar dengan`colCaseFirst=upper`, tetapi tidak untuk koleksi CI\$1AS. PREFhanya dapat diterapkan pada kumpulan `CS_AS` deterministik. | 

## Kolasi didukung pada tingkat database di Babelfish
<a name="babelfish-collations.database-level"></a>

Kumpulan berikut didukung pada tingkat database di Babelfish:
+ bbf\$1unicode\$1bin2
+ bbf\$1unicode\$1cp1\$1ci\$1ai
+ bbf\$1unicode\$1cp1\$1ci\$1as
+ bbf\$1unicode\$1cp1250\$1ci\$1ai
+ bbf\$1unicode\$1cp1250\$1ci\$1as
+ bbf\$1unicode\$1cp1257\$1ci\$1ai
+ bbf\$1unicode\$1cp1257\$1ci\$1as
+ estonian\$1ci\$1ai
+ estonian\$1ci\$1as
+ finnish\$1swedish\$1ci\$1ai
+ finnish\$1swedish\$1ci\$1as
+ french\$1ci\$1ai
+ french\$1ci\$1as
+ latin1\$1general\$1bin2
+ latin1\$1general\$1ci\$1ai
+ latin1\$1general\$1ci\$1as
+ latin1\$1general\$190\$1bin2
+ latin1\$1general\$1100\$1bin2
+ latin1\$1general\$1140\$1bin2
+ modern\$1spanish\$1ci\$1ai
+ modern\$1spanish\$1ci\$1as
+ polish\$1ci\$1ai
+ polish\$1ci\$1as
+ sql\$1latin1\$1general\$1cp1\$1ci\$1ai
+ sql\$1latin1\$1general\$1cp1\$1ci\$1as
+ sql\$1latin1\$1general\$1cp1250\$1ci\$1as
+ sql\$1latin1\$1general\$1cp1251\$1ci\$1as
+ sql\$1latin1\$1general\$1cp1257\$1ci\$1as
+ tradisional\$1spanish\$1ci\$1ai
+ tradisional\$1spanish\$1ci\$1as

**catatan**  
Untuk menggunakan pemeriksaan yang berbeda di tingkat database, pastikan itu cocok dengan pemeriksaan tingkat server. Untuk informasi selengkapnya, silakan lihat [Server dan Objek Collations di Babelfish](#babelfish-collations.reference-tables-supported-collations)

## Server dan Objek Collations di Babelfish
<a name="babelfish-collations.reference-tables-supported-collations"></a>

Gunakan kolasi berikut sebagai kolasi server atau kolasi objek.<a name="bfish-collations-table"></a>


| ID Kolasi | Catatan | 
| --- | --- | 
|  bbf\$1unicode\$1general\$1ci\$1as  |  Mendukung perbandingan case-insensitive dan operator. LIKE  | 
|  bbf\$1unicode\$1cp1\$1ci\$1as  |  [Pengumpulan nondeterministik juga dikenal](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1252.txt) sebagai. CP1252  | 
|  CP125bbf\$1unicode\$1 0\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1250.txt) digunakan untuk mewakili teks dalam bahasa Eropa Tengah dan Eropa Timur yang menggunakan aksara Latin.  | 
|  CP1251bbf\$1unicode\$1 \$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1251.txt) untuk bahasa yang menggunakan skrip Sirilik.  | 
|  bbf\$1unicode\$1cp1253\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1253.txt) digunakan untuk mewakili bahasa Yunani modern.  | 
|  bbf\$1unicode\$1cp1254\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1254.txt) yang mendukung bahasa Turki.  | 
|  bbf\$1unicode\$1cp1255\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1255.txt) yang mendukung bahasa Ibrani.  | 
|  bbf\$1unicode\$1cp1256\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1256.txt) digunakan untuk menulis bahasa yang menggunakan aksara Arab.  | 
|  bbf\$1unicode\$1cp1257\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1257.txt) digunakan untuk mendukung bahasa Estonia, Latvia, dan Lituania.  | 
|  bbf\$1unicode\$1cp1258\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1258.txt) digunakan untuk menulis karakter Vietnam.  | 
|  bbf\$1unicode\$1cp874\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit874.txt) digunakan untuk menulis karakter Thailand.  | 
|  sql\$1latin1\$1general\$1cp1250\$1ci\$1as  |  [Pengodean karakter byte tunggal nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1250.txt) digunakan untuk mewakili karakter Latin.  | 
|  sql\$1latin1\$1general\$1cp1251\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1251.txt) yang mendukung karakter Latin.  | 
|  sql\$1latin1\$1general\$1cp1\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1252.txt) yang mendukung karakter Latin.  | 
|  sql\$1latin1\$1general\$1cp1253\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1253.txt) yang mendukung karakter Latin.  | 
|  sql\$1latin1\$1general\$1cp1254\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1254.txt) yang mendukung karakter Latin.  | 
|  sql\$1latin1\$1general\$1cp1255\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1255.txt) yang mendukung karakter Latin.  | 
|  sql\$1latin1\$1general\$1cp1256\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1256.txt) yang mendukung karakter Latin.  | 
|  sql\$1latin1\$1general\$1cp1257\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1257.txt) yang mendukung karakter Latin.  | 
|  sql\$1latin1\$1general\$1cp1258\$1ci\$1as  |  [Kolasi nondeterministik](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1258.txt) yang mendukung karakter Latin.  | 
|  chinese\$1prc\$1ci\$1as  |  Pengumpulan nondeterministik yang mendukung bahasa Mandarin (). PRC  | 
|  cyrillic\$1general\$1ci\$1as  |  Kolasi nondeterministik yang mendukung Sirilik.  | 
|  finnish\$1swedish\$1ci\$1as  |  Kolasi nondeterministik yang mendukung bahasa Finlandia.  | 
|  french\$1ci\$1as  |  Kolasi nondeterministik yang mendukung bahasa Prancis.  | 
|  japanese\$1ci\$1as  | Kolasi nondeterministik yang mendukung bahasa Jepang. Didukung di Babelfish 2.1.0 dan rilis yang lebih baru. | 
|  korean\$1wansung\$1ci\$1as  |  Kolasi nondeterministik yang mendukung bahasa Korea (dengan jenis kamus).  | 
|  latin1\$1general\$1ci\$1as  |  Kolasi nondeterministik yang mendukung karakter Latin.  | 
|  modern\$1spanish\$1ci\$1as  |  Kolasi nondeterministik yang mendukung bahasa Spanyol Modern.  | 
|  polish\$1ci\$1as  |  Kolasi nondeterministik yang mendukung bahasa Polandia.  | 
|  thai\$1ci\$1as  |  Kolasi nondeterministik yang mendukung bahasa Thailand.  | 
|  tradisional\$1spanish\$1ci\$1as  |  Kolasi nondeterministik yang mendukung bahasa Spanyol (jenis tradisional).  | 
|  turkish\$1ci\$1as  |  Kolasi nondeterministik yang mendukung bahasa Turki.  | 
|  ukrainian\$1ci\$1as  |  Kolasi nondeterministik yang mendukung Ukraina.  | 
|  vietnamese\$1ci\$1as  |  Kolasi nondeterministik yang mendukung bahasa Vietnam.  | 

Anda dapat menggunakan kolasi berikut sebagai kolasi objek.<a name="bfish-icu-collations-table"></a>


| Dialek | Opsi deterministik | Opsi nondeterministik | 
| --- | --- | --- | 
|  Arab  |  Arabic\$1CS\$1AS  |  Arabic\$1CI\$1AS Arabic\$1ci\$1ai  | 
|  Skrip Arab  |  BBF\$1Unicode\$1 \$1CS\$1AS CP1256 BBF\$1Unicode\$1Pref\$1 \$1CS\$1AS CP1256  |  BBF\$1Unicode\$1 \$1CI\$1AI CP1256 BBF\$1Unicode\$1 \$1CS\$1AI CP1256  | 
|  Biner  |  latin1\$1general\$1bin2 BBF\$1Unicode\$1 BIN2  |  –  | 
|  Bahasa Eropa Tengah dan Eropa Timur yang menggunakan aksara Latin  |  BBF\$1Unicode\$1 0\$1CS\$1AS CP125 BBF\$1Unicode\$1Pref\$1 0\$1CS\$1AS CP125  |  BBF\$1Unicode\$1 0\$1CI\$1AI CP125 BBF\$1Unicode\$1 0\$1CS\$1AI CP125  | 
|  Mandarin  |  Cina\$1 \$1CS\$1AS PRC  |  PRCCina\$1 \$1CI\$1AS PRCCina\$1 \$1CI\$1AI  | 
|  Cyrillic\$1Umum  |  Cyrillic\$1General\$1CS\$1AS  |  Cyrillic\$1General\$1CI\$1AS Cyrillic\$1General\$1CI\$1AI  | 
|  Skrip Sirilik  |  BBF\$1Unicode\$1 \$1CS\$1AS CP1251 BBF\$1Unicode\$1Pref\$1 \$1CS\$1AS CP1251  |  BBF\$1Unicode\$1 \$1CI\$1AI CP1251 BBF\$1Unicode\$1 \$1CS\$1AI CP1251  | 
|  Estonia  |  Estonian\$1CS\$1AS  |  Estonia\$1CI\$1AS Estonia\$1CI\$1AI  | 
|  Estonia, Latvia, dan Lituania  |  BBF\$1Unicode\$1 \$1CS\$1AS CP1257 BBF\$1Unicode\$1Pref\$1 \$1CS\$1AS CP1257  |  BBF\$1Unicode\$1 \$1CI\$1AI CP1257 BBF\$1Unicode\$1 \$1CS\$1AI CP1257  | 
|  Finlandia\$1Swedia  |  Finnish\$1Swedish\$1CS\$1AS  |  Finnish\$1Swedish\$1CI\$1AS Finlandia\$1Swedia\$1CI\$1AI  | 
|  Prancis  |  French\$1CS\$1AS  |  French\$1CI\$1AS Perancis\$1CI\$1AI  | 
|  Yunani  |  Greek\$1CS\$1AS  |  Yunani\$1ci\$1as Yunani\$1ci\$1ai  | 
|  Ibrani  |  BBF\$1Unicode\$1 \$1CS\$1AS CP1255 BBF\$1Unicode\$1Pref\$1 \$1CS\$1AS CP1255 Hebrew\$1CS\$1AS  |  BBF\$1Unicode\$1 \$1CI\$1AI CP1255 BBF\$1Unicode\$1 \$1CS\$1AI CP1255 Hebrew\$1CI\$1AS Ibrani\$1CI\$1ai  | 
|  Jepang (Babelfish 2.1.0 dan lebih tinggi)  | Japanese\$1CS\$1AS | Jepang\$1CI\$1AI Japanese\$1CI\$1AS | 
|  Korea\$1Wamsung  |  Korean\$1Wamsung\$1CS\$1AS  |  Korea\$1Wamsung\$1CI\$1AS Korea\$1Wamsung\$1CI\$1AI  | 
|  Karakter Latin untuk halaman kode CP1252  |  latin1\$1general\$1cs\$1as BBF\$1Unicode\$1General\$1CS\$1AS BBF\$1Unicode\$1General\$1Pref\$1CS\$1AS BBF\$1Unicode\$1Pref\$1 \$1CS\$1AS CP1 BBF\$1Unicode\$1 \$1CS\$1AS CP1  |  latin1\$1general\$1ci\$1as latin1\$1general\$1ci\$1ai latin1\$1general\$1cs\$1ai BBF\$1Unicode\$1Umum\$1CI\$1AI BBF\$1Unicode\$1Umum\$1CS\$1AI BBF\$1Unicode\$1 \$1CI\$1AI CP1 BBF\$1Unicode\$1 \$1CS\$1AI CP1  | 
|  Yunani modern  |  BBF\$1Unicode\$1 \$1CS\$1AS CP1253 BBF\$1Unicode\$1Pref\$1 \$1CS\$1AS CP1253  |  BBF\$1Unicode\$1 \$1CI\$1AI CP1253 BBF\$1Unicode\$1 \$1CS\$1AI CP1253  | 
|  Modern\$1Spanyol  |  Modern\$1Spanish\$1CS\$1AS  |  Modern\$1Spanish\$1CI\$1AS Modern\$1Spanyol\$1CI\$1AI  | 
|  Mongolia  |  Mongolian\$1CS\$1AS  |  Mongolia\$1CI\$1AS Mongolia\$1CI\$1ai  | 
|  Polandia  |  Polish\$1CS\$1AS  |  Polish\$1CI\$1AS Polandia\$1CI\$1AI  | 
|  Thai  |  BBF\$1Unicode\$1 \$1CS\$1AS CP874 BBF\$1Unicode\$1Pref\$1 \$1CS\$1AS CP874 Thai\$1CS\$1AS  |  BBF\$1Unicode\$1 \$1CI\$1AI CP874 BBF\$1Unicode\$1 \$1CS\$1AI CP874 Thai\$1CI\$1AS, Thai\$1CI\$1AI  | 
|  Tradisional\$1Spanyol  |  Traditional\$1Spanish\$1CS\$1AS  |  Tradisional\$1Spanish\$1CI\$1AS Tradisional\$1Spanyol\$1CI\$1AI  | 
|  Turki  |  BBF\$1Unicode\$1 \$1CS\$1AS CP1254 BBF\$1Unicode\$1Pref\$1 \$1CS\$1AS CP1254 Turkish\$1CS\$1AS  |  BBF\$1Unicode\$1 \$1CI\$1AI CP1254 BBF\$1Unicode\$1 \$1CS\$1AI CP1254 Turkish\$1CI\$1AS, Turkish\$1CI\$1AI  | 
|  Ukrania  |  Ukranian\$1CS\$1AS  |  Ukranian\$1ci\$1as Ukranian\$1ci\$1ai  | 
|  Vietnam  |  BBF\$1Unicode\$1 \$1CS\$1AS CP1258 BBF\$1Unicode\$1Pref\$1 \$1CS\$1AS CP1258 Vietnamese\$1CS\$1AS  |  BBF\$1Unicode\$1 \$1CI\$1AI CP1258 BBF\$1Unicode\$1 \$1CS\$1AI CP1258 Vietnam\$1CI\$1AS Vietnam\$1ci\$1ai  | 

## Perilaku Collation default di Babelfish
<a name="babelfish-collations-default"></a>

Sebelumnya, kolasi default dari tipe data yang dapat dikolasi adalah `pg_catalog.default`. Tipe data dan objek yang bergantung pada tipe data ini mengikuti kolasi peka huruf besar/kecil. Kondisi ini berpotensi berdampak pada SQL objek T dari kumpulan data dengan pemeriksaan case-insensitive. Dimulai dengan Babelfish 2.3.0, pemeriksaan default untuk tipe data yang dapat dijaminkan (kecuali TEXT danNTEXT) sama dengan pemeriksaan dalam parameter. `babelfishpg_tsql.server_collation_name` Saat Anda meningkatkan ke Babelfish 2.3.0, kolasi default dipilih secara otomatis pada saat pembuatan klaster DB, yang tidak menciptakan dampak yang terlihat. 

# Mengelola kolasi
<a name="collation.managing"></a>

Pustaka ICU menyediakan pelacakan versi pemeriksaan untuk memastikan bahwa indeks yang bergantung pada kolasi dapat diindeks ulang ketika versi baru ICU tersedia. Untuk melihat apakah basis data Anda saat ini memiliki kolasi yang perlu disegarkan, Anda dapat menggunakan kueri berikut setelah menghubungkan menggunakan `psql` atau `pgAdmin`:

```
SELECT pg_describe_object(refclassid, refobjid,
    refobjsubid) AS "Collation", 
    pg_describe_object(classid, objid, objsubid) AS "Object" 
    FROM pg_depend d JOIN pg_collation c ON refclassid = 'pg_collation'::regclass
    AND refobjid = c.oid WHERE c.collversion <> pg_collation_actual_version(c.oid) 
    ORDER BY 1, 2;
```

Kueri ini menghasilkan output seperti berikut ini:

```
 Collation | Object
-----------+--------
(0 rows)
```

Dalam contoh ini, tidak ada kolasi yang perlu diperbarui.

Untuk mendapatkan daftar kolasi yang telah ditentukan dalam basis data Babelfish Anda, Anda dapat menggunakan `psql` atau `pgAdmin` dengan kueri berikut:

```
SELECT * FROM pg_collation;
```

Kolasi yang telah ditentukan disimpan dalam tabel `sys.fn_helpcollations`. Anda dapat menggunakan perintah berikut untuk menampilkan informasi tentang kolasi (seperti lcid, style, dan bendera kolasi). Untuk mendapatkan daftar semua kolasi dengan menggunakan `sqlcmd`, hubungkan ke port T-SQL (1433, secara default) dan jalankan kueri berikut: 

```
1> :setvar SQLCMDMAXVARTYPEWIDTH 40
2> :setvar SQLCMDMAXFIXEDTYPEWIDTH 40
3> SELECT * FROM fn_helpcollations()
4> GO
name                                     description
---------------------------------------- ----------------------------------------
arabic_cs_as                             Arabic, case-sensitive, accent-sensitive
arabic_ci_ai                             Arabic, case-insensitive, accent-insensi
arabic_ci_as                             Arabic, case-insensitive, accent-sensiti
bbf_unicode_bin2                         Unicode-General, case-sensitive, accent-
bbf_unicode_cp1250_ci_ai                 Default locale, code page 1250, case-ins
bbf_unicode_cp1250_ci_as                 Default locale, code page 1250, case-ins
bbf_unicode_cp1250_cs_ai                 Default locale, code page 1250, case-sen
bbf_unicode_cp1250_cs_as                 Default locale, code page 1250, case-sen
bbf_unicode_pref_cp1250_cs_as            Default locale, code page 1250, case-sen
bbf_unicode_cp1251_ci_ai                 Default locale, code page 1251, case-ins
bbf_unicode_cp1251_ci_as                 Default locale, code page 1251, case-ins
bbf_unicode_cp1254_ci_ai                 Default locale, code page 1254, case-ins
...
(124 rows affected)
```

Baris 1 dan 2 yang ditunjukkan pada contoh mempersempit output hanya untuk tujuan keterbacaan dokumentasi. 

```
1> SELECT SERVERPROPERTY('COLLATION')
2> GO
serverproperty
---------------------------------------------------------------------------
sql_latin1_general_cp1_ci_as

(1 rows affected)
1>
```

# Batasan kolasi dan perbedaan perilaku
<a name="collation.limitations"></a>

Babelfish menggunakan pustaka ICU untuk dukungan kolasi. PostgreSQL dibuat dengan versi ICU tertentu dan dapat mencocokkan paling banyak satu versi kolasi. Variasi antarversi tidak dapat dihindari, begitu juga variasi kecil sepanjang waktu seiring berkembangnya bahasa. Dalam daftar berikut, Anda dapat menemukan batasan dan variasi perilaku yang diketahui dari kolasi Babelfish:
+ **Ketergantungan tipe indeks dan pemeriksaan** – Indeks pada tipe yang ditentukan pengguna yang bergantung pada pustaka kolasi International Components for Unicode (ICU) (pustaka yang digunakan oleh Babelfish) valid saat versi pustaka berubah.
+ **Fungsi COLLATIONPROPERTY** – Properti kolasi diimplementasikan hanya untuk kolasi BBF Babelfish yang didukung. Untuk informasi selengkapnya, lihat [Babelfish supported collations table](babelfish-collations.md#bfish-collations-table).
+ **Perbedaan aturan pengurutan Unicode** – Kolasi SQL untuk SQL Server mengurutkan data yang berenkode Unicode (`nchar` dan `nvarchar`) secara berbeda dibandingkan data yang tidak berenkode Unicode (`char` dan `varchar`). Basis data Babelfish selalu berenkode UTF-8 dan selalu menerapkan aturan pengurutan Unicode secara konsisten, terlepas dari tipe data, jadi urutan untuk `char` atau `varchar` sama dengan urutan untuk `nchar` atau `nvarchar`.
+ **Perilaku pengurutan dan kolasi setara sekunder** – Kolasi ICU Unicode setara sekunder default (`CI_AS`) mengurutkan tanda baca dan karakter nonalfanumerik lainnya sebelum karakter numerik, dan karakter numerik sebelum karakter abjad. Namun, urutan tanda baca dan karakter khusus lainnya berbeda. 
+ **Kolasi tersier, solusi untuk ORDER BY** – Kolasi SQL, seperti `SQL_Latin1_General_Pref_CP1_CI_AS`, mendukung fungsi `TERTIARY_WEIGHTS` dan kemampuan untuk mengurutkan string yang membandingkan secara merata dalam kolasi `CI_AS` yang akan diurutkan berdasarkan huruf besar terlebih dahulu: `ABC`, `ABc`, `AbC`, `Abc`, `aBC`, `aBc`, `abC`, dan terakhir `abc`. Dengan demikian, fungsi analitik `DENSE_RANK OVER (ORDER BY column)` menilai string-string ini sebagai memiliki peringkat yang sama tetapi mengurutkan string berdasarkan huruf besar terlebih dahulu dalam sebuah partisi.

  Anda bisa mendapatkan hasil yang serupa menggunakan Babelfish dengan menambahkan klausa `COLLATE` ke klausa `ORDER BY` yang menentukan kolasi `CS_AS` tersier yang menentukan `@colCaseFirst=upper`. Namun, pengubah `colCaseFirst` hanya berlaku untuk string setara tersier (bukan setara sekunder seperti kolasi `CI_AS`). Jadi, Anda tidak dapat mengemulasi kolasi SQL tersier menggunakan satu kolasi ICU. 

  Sebagai solusinya, kami merekomendasikan agar Anda mengubah aplikasi yang menggunakan kolasi `SQL_Latin1_General_Pref_CP1_CI_AS` untuk menggunakan kolasi `BBF_SQL_Latin1_General_CP1_CI_AS` terlebih dahulu. Kemudian, tambahkan `COLLATE BBF_SQL_Latin1_General_Pref_CP1_CS_AS` ke klausa `ORDER BY` apa pun untuk kolom ini.
+ **Ekspansi karakter** – Ekspansi karakter memperlakukan satu karakter sama dengan urutan karakter di tingkat primer. Kolasi `CI_AS` default SQL Server mendukung ekspansi karakter. Kolasi ICU mendukung ekspansi karakter hanya untuk kolasi yang tidak peka terhadap aksen.

  Ketika ekspansi karakter diperlukan, gunakan kolasi `AI` untuk perbandingan. Namun, kolasi tersebut saat ini tidak didukung oleh operator LIKE.
+ **enkode char dan varchar** – Ketika kolasi SQL digunakan untuk tipe data `char` atau `varchar`, urutan karakter ASCII 127 sebelumnya ditentukan oleh halaman kode spesifik untuk kolasi SQL tersebut. Untuk kolasi SQL, string yang dideklarasikan sebagai `char` atau `varchar` mungkin diurutkan secara berbeda dibandingkan string yang dideklarasikan sebagai `nchar` atau `nvarchar`.

  PostgreSQL mengenkode semua string dengan enkode basis data, sehingga semua karakter dikonversi ke UTF-8 dan diurutkan menggunakan aturan Unicode.

  Karena kolasi SQL mengurutkan tipe data nchar dan nvarchar menggunakan aturan Unicode, Babelfish mengenkode semua string di server menggunakan UTF-8. Babelfish mengurutkan string nchar dan nvarchar dengan cara yang sama seperti mengurutkan string char dan varchar, yaitu menggunakan aturan Unicode.
+ **Karakter tambahan** – Fungsi SQL Server `NCHAR`, `UNICODE`, dan `LEN` mendukung karakter untuk titik kode di luar Unicode Basic Multilingual Plane (BMP). Sebaliknya, kolasi non-SC menggunakan karakter pasangan pengganti untuk menangani karakter tambahan. Untuk tipe data Unicode, SQL Server dapat mewakili hingga 65.535 karakter menggunakan UCS-2, atau rentang Unicode penuh (1.114.114 karakter) jika karakter tambahan digunakan. 
+ **Kolasi yang peka terhadap Kana (KS)** – Kolasi yang peka terhadap Kana (KS) adalah salah satu kolasi yang memperlakukan karakter Kana Jepang `Hiragana` dan `Katakana` secara berbeda. ICU mendukung standar kolasi Jepang `JIS X 4061`. Pengubah lokal `colhiraganaQ [on | off]` yang kini tidak digunakan lagi mungkin menyediakan fungsi yang sama dengan kolasi KS. Namun, kolasi KS untuk nama yang sama dengan SQL Server saat ini tidak didukung oleh Babelfish.
+ **Kolasi yang peka terhadap lebar (WS)** – Ketika karakter byte tunggal (lebar setengah) dan karakter sama yang direpresentasikan sebagai karakter byte ganda (lebar penuh) diperlakukan secara berbeda, kolasi ini disebut sebagai *peka terhadap lebar (WS)*. Kolasi WS untuk nama yang sama dengan SQL Server saat ini tidak didukung oleh Babelfish.
+ **Kolasi yang peka terhadap pemilih variasi (VSS)** – Kolasi yang peka terhadap pemilih variasi (VSS) membedakan antara pemilih variasi ideografis dalam kolasi Jepang `Japanese_Bushu_Kakusu_140` dan `Japanese_XJIS_140`. Urutan variasi terdiri dari karakter dasar ditambah pemilih variasi tambahan. Jika Anda tidak memilih opsi `_VSS`, pemilih variasi tidak dipertimbangkan dalam perbandingan.

  Kolasi VSS saat ini tidak didukung oleh Babelfish.
+ **Kolasi BIN dan BIN2** – Kolasi BIN2 mengurutkan karakter menurut urutan titik kode. Urutan biner byte-per-byte UTF-8 mempertahankan urutan titik kode Unicode, sehingga kolasi ini juga cenderung menjadi kolasi dengan performa terbaik. Jika urutan titik kode Unicode berfungsi untuk aplikasi, pertimbangkan untuk menggunakan kolasi BIN2. Namun, penggunaan kolasi BIN2 dapat mengakibatkan data ditampilkan kepada klien dalam urutan yang tidak terduga secara budaya. Pemetaan baru untuk karakter huruf kecil ditambahkan ke Unicode seiring berjalannya waktu, sehingga fungsi `LOWER` mungkin memiliki performa yang berbeda pada versi ICU yang berbeda. Kasus ini bersifat khusus untuk masalah versioning kolasi yang lebih umum daripada sebagai satu kasus spesifik untuk kolasi BIN2. 

  Babelfish menyediakan kolasi `BBF_Latin1_General_BIN2` dengan distribusi Babelfish untuk membuat kolasi dalam urutan titik kode Unicode. Dalam kolasi BIN, hanya karakter pertama yang diurutkan sebagai wchar. Karakter yang tersisa diurutkan byte-per-byte, secara efektif dalam urutan titik kode sesuai dengan enkodenya. Pendekatan ini tidak mengikuti aturan kolasi Unicode dan tidak didukung oleh Babelfish.
+ **Kolasi nondeterministik dan batasan CHARINDEX** – Untuk rilis Babelfish yang lebih lama dari versi 2.1.0, Anda tidak dapat menggunakan CHARINDEX dengan kolasi nondeterministik. Secara default, Babelfish menggunakan kolasi yang tidak peka terhadap huruf besar/kecil (nondeterministik). Menggunakan CHARINDEX untuk versi Babelfish yang lebih lama akan menimbulkan kesalahan runtime berikut:

  ```
  nondeterministic collations are not supported for substring searches
  ```
**catatan**  
Batasan dan solusi ini hanya berlaku untuk Babelfish versi 1.x (versi Aurora PostgreSQL 13.x). Babelfish 2.1.0 dan rilis yang lebih tinggi tidak memiliki masalah ini.

  Anda dapat mengatasi masalah ini dengan salah satu cara berikut:
  + Ubah ekspresi secara eksplisit menjadi kolasi yang peka terhadap huruf besar/kecil dan seragamkan huruf besar/kecil pada kedua argumen dengan menerapkan LOWER atau UPPER. Misalnya, `SELECT charindex('x', a) FROM t1` akan menjadi berikut:

    ```
    SELECT charindex(LOWER('x'), LOWER(a COLLATE sql_latin1_general_cp1_cs_as)) FROM t1
    ```
  + Buat fungsi SQL f\$1charindex, lalu ganti panggilan CHARINDEX dengan panggilan ke fungsi berikut:

    ```
    CREATE function f_charindex(@s1 varchar(max), @s2 varchar(max)) RETURNS int
    AS
    BEGIN
    declare @i int = 1
    WHILE len(@s2) >= len(@s1)
    BEGIN
      if LOWER(@s1) = LOWER(substring(@s2,1,len(@s1))) return @i
      set @i += 1
      set @s2 = substring(@s2,2,999999999)
    END
    return 0
    END
    go
    ```

# Mengelola penanganan kesalahan Babelfish dengan escape hatch
<a name="babelfish-strict"></a>

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](https://www.postgresql.org/docs/current/errcodes-appendix.html).

## Memodifikasi pengaturan escape hatch Babelfish
<a name="babelfish-escape_hatches"></a>

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 pengenal satu atau `hatch_name` lebih lubang escape. *hatch\$1name*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\$1hatch\$1checkpoint |  Mengizinkan penggunaan CHECKPOINT pernyataan dalam kode prosedural, tetapi CHECKPOINT pernyataan tersebut saat ini tidak diterapkan.  |  abaikan  | 
| escape\$1hatch\$1constraint\$1name\$1for\$1default |  Mengontrol perilaku Babelfish yang terkait dengan nama batasan default.  |  abaikan  | 
| escape\$1hatch\$1database\$1misc\$1options |  Mengontrol perilaku Babelfish yang terkait dengan opsi berikut di CREATEDATABASE:CONTAINMENT, DB\$1,CHAINING, TRUSTWORTHY \$1 \$1. PERSISTENT LOG BUFFER  |  abaikan  | 
| escape\$1hatch\$1for\$1replication |  Mengontrol perilaku Babelfish yang terkait dengan FOR REPLICATION klausa [NOT] saat membuat atau mengubah tabel.  |  ketat  | 
| escape\$1hatch\$1fulltext |  Mengontrol perilaku Babelfish yang terkait dengan FULLTEXT fitur, seperti DEFAULT \$1 FULLTEXT \$1 LANGUAGE inCREATE/, ALTER DATABASE CREATE FULLTEXTINDEX, atau sp\$1fulltext\$1database.  |  abaikan  | 
| escape\$1hatch\$1ignore\$1dup\$1key |  Mengontrol perilaku Babelfish terkait CREATE ALTER TABLE dengan/dan. CREATE INDEX Ketika IGNORE \$1 DUP \$1 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\$1hatch\$1index\$1clustering |  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\$1hatch\$1index\$1columnstore |  Mengontrol perilaku Babelfish terkait dengan klausa. COLUMNSTORE Jika Anda menentukan `ignore`, Babelfish membuat indeks B-tree biasa.  |  ketat  | 
| escape\$1hatch\$1join\$1hints |  Mengontrol perilaku kata kunci dalam JOIN operator:LOOP,HASH,MERGE,REMOTE,REDUCE,REDISTRIBUTE,REPLICATE.  |  abaikan  | 
| escape\$1hatch\$1language\$1non\$1english |  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\$1hatch\$1login\$1hashed\$1password |  Ketika diabaikan, menekan kesalahan untuk kata kunci `HASHED` untuk `CREATE LOGIN` dan `ALTER LOGIN`.  |  ketat  | 
| escape\$1hatch\$1login\$1misc\$1options |  Ketika diabaikan, menekan kesalahan untuk kata kunci lain selain `HASHED`, `MUST_CHANGE`, `OLD_PASSWORD`, dan `UNLOCK` untuk `CREATE LOGIN` dan `ALTER LOGIN`.  |  ketat  | 
| escape\$1hatch\$1login\$1old\$1password |  Ketika diabaikan, menekan kesalahan untuk kata kunci `OLD_PASSWORD` untuk `CREATE LOGIN` dan `ALTER LOGIN`.  |  ketat  | 
| escape\$1hatch\$1login\$1password\$1must\$1change |  Ketika diabaikan, menekan kesalahan untuk kata kunci `MUST_CHANGE` untuk `CREATE LOGIN` dan `ALTER LOGIN`.  |  ketat  | 
| escape\$1hatch\$1login\$1password\$1unlock |  Ketika diabaikan, menekan kesalahan untuk kata kunci `UNLOCK` untuk `CREATE LOGIN` dan `ALTER LOGIN`.  |  ketat  | 
| escape\$1hatch\$1nocheck\$1add\$1constraint |  Mengontrol perilaku Babelfish terkait dengan WITH CHECK atau NOCHECK klausa untuk kendala.  |  ketat  | 
| escape\$1hatch\$1nocheck\$1existing\$1constraint |  Mengontrol perilaku Babelfish yang terkait dengan FOREIGN KEY atau CHECK kendala.   |  ketat  | 
| escape\$1hatch\$1query\$1hints |  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\$1hatch\$1rowversion | Mengontrol perilaku tipe ROWVERSION dan TIMESTAMP tipe data. Untuk informasi penggunaan, lihat [Menggunakan fitur Babelfish dengan implementasi terbatas](babelfish-compatibility.tsql.limited-implementation.md). | ketat | 
| escape\$1hatch\$1schemabinding\$1function |  Mengontrol perilaku Babelfish terkait dengan klausa. WITH SCHEMABINDING Secara default, WITH SCHEMABINDING klausa diabaikan ketika ditentukan dengan ALTER FUNCTION perintah CREATE or.   |  abaikan  | 
| escape\$1hatch\$1schemabinding\$1procedure |  Mengontrol perilaku Babelfish terkait dengan klausa. WITH SCHEMABINDING Secara default, WITH SCHEMABINDING klausa diabaikan ketika ditentukan dengan ALTER PROCEDURE perintah CREATE or.   |  abaikan  | 
| escape\$1hatch\$1rowguidcol\$1column |  Mengontrol perilaku Babelfish terkait dengan ROWGUIDCOL klausa saat membuat atau mengubah tabel.  |  ketat  | 
| escape\$1hatch\$1schemabinding\$1trigger |  Mengontrol perilaku Babelfish terkait dengan klausa. WITH SCHEMABINDING Secara default, WITH SCHEMABINDING klausa diabaikan ketika ditentukan dengan ALTER TRIGGER perintah CREATE or.  |  abaikan  | 
| escape\$1hatch\$1schemabinding\$1view |  Mengontrol perilaku Babelfish terkait dengan klausa. WITH SCHEMABINDING Secara default, WITH SCHEMABINDING klausa diabaikan ketika ditentukan dengan ALTER VIEW perintah CREATE or.  |  abaikan  | 
| escape\$1hatch\$1session\$1settings |  Mengontrol perilaku Babelfish terhadap pernyataan tingkat sesi yang tidak didukung. SET  |  abaikan  | 
| escape\$1hatch\$1showplan\$1all |  Mengontrol perilaku Babelfish terkait dengan SET SHOWPLAN \$1 ALL dan. SET STATISTICS PROFILE Ketika diatur untuk mengabaikan, mereka berperilaku seperti SET BABELFISH \$1 SHOWPLAN \$1 ALL dan SET BABELFISH \$1 STATISTICSPROFILE; ketika diatur ke ketat, mereka diam-diam diabaikan.  |  ketat  | 
| escape\$1hatch\$1storage\$1on\$1partition |  Mengontrol perilaku Babelfish yang terkait dengan klausa `ON partition_scheme column ` saat mendefinisikan partisi. Babelfish saat ini tidak menerapkan partisi.  |  ketat  | 
| escape\$1hatch\$1storage\$1options |  Escape hatch pada opsi penyimpanan apa pun yang digunakan dalamCREATE,, ALTER DATABASETABLE,INDEX. Ini termasuk klausa (LOG) ON, TEXTIMAGE \$1ON, FILESTREAM \$1ON 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\$1scheme (kolom).  |  abaikan  | 
| escape\$1hatch\$1table\$1hints |  Mengontrol perilaku petunjuk tabel yang ditentukan menggunakan klausa WITH (...).   |  abaikan  | 
| escape\$1hatch\$1unique\$1constraint |  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  | 