

 Amazon Redshift tidak akan lagi mendukung pembuatan UDF Python baru mulai Patch 198. UDF Python yang ada akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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

# Perbedaan antara versi 2.x dan 1.x dari driver ODBC
<a name="odbc20-odbc10-driver-differences"></a>

Bagian ini menjelaskan perbedaan antara driver [ODBC 1.x dan driver](configure-odbc-connection.md) [ODBC 2.x, dan memberikan panduan tentang cara bermigrasi ke driver](odbc20-install.md) 2.x. Ini menjelaskan perubahan yang mungkin memengaruhi aplikasi Anda dan cara mengatasinya.

## Perbedaan utama untuk diatasi
<a name="odbc20-migrate-key-differences"></a>

Tindakan berikut menyelesaikan masalah migrasi yang paling umum. Sebagian besar aplikasi hanya membutuhkan sebagian dari ini.

### DSN dan string koneksi
<a name="odbc20-migrate-dsn"></a>
+ **Tinjau DSN Anda untuk opsi driver yang mungkin telah dihapus atau diganti namanya.** Beberapa opsi driver ODBC 1.x tidak didukung di driver ODBC 2.x. Lainnya telah berganti nama. Lihat [String koneksi dan opsi DSN](#odbc20-migrate-connection-options) untuk detail.
+ **Tetapkan `UseUnicode=true` jika aplikasi Anda bergantung pada kode tipe karakter lebar (`SQL_WVARCHAR`,`SQL_WCHAR`).** Di driver ODBC 2.x, `UseUnicode` defaultnya`false`, yang melaporkan tipe karakter sempit.
+ **Pindahkan pengaturan logging ke `[ODBC]` bagian.** Di Linux dan macOS, `LogLevel` dan `LogPath` harus diatur di bagian global`odbc.ini`, bukan di `[ODBC]` bagian DSN individual.

### Kueri dan skema
<a name="odbc20-migrate-query-schema"></a>
+ **Sertakan `EXTERNAL TABLE` dalam filter `SQLTables` tipe.** Di ODBC 2.x, tabel Amazon Redshift Spectrum dan tabel datashare dilaporkan sebagai. `EXTERNAL TABLE` Jika Anda memfilter `SQLTables` berdasarkan jenis, tambahkan `EXTERNAL TABLE` untuk terus melihat objek-objek ini.
+ **Transmisikan `INTERVAL` ke `VARCHAR` aplikasi yang tidak mendukung tipe data interval.** Beberapa klien tidak mendukung jenis interval ODBC. Untuk klien tersebut, kirimkan kolom dalam kueri Anda: `SELECT col::VARCHAR FROM ...`

### Kode aplikasi
<a name="odbc20-migrate-application-code"></a>
+ **Verifikasi pengaturan batas waktu kueri.** ODBC 2.x memberlakukan dengan benar `SQL_ATTR_QUERY_TIMEOUT` sesuai spesifikasi ODBC. ODBC 1.x diam-diam mengabaikan pengaturan ini. Long-running kueri yang sebelumnya berhasil mungkin sekarang gagal dengan kesalahan batas waktu. Tinjau dan sesuaikan nilai batas waktu Anda sesuai kebutuhan.
+ **Berikan panjang data untuk parameter data-at-eksekusi.** 2.x melaporkan `SQL_NEED_LONG_DATA_LEN` sebagai `Y` (1.x dilaporkan`N`). Aplikasi yang mengikat `SQL_DATA_AT_EXEC` parameter sekarang harus menyediakan total panjang data di `StrLen_or_IndPtr` depan.

## String koneksi dan opsi DSN
<a name="odbc20-migrate-connection-options"></a>

Tabel berikut menunjukkan opsi driver ODBC 1.x yang telah diganti namanya atau memiliki ekuivalen langsung dalam driver ODBC 2.x.


| Opsi 1.x | 2.x setara | Catatan | 
| --- | --- | --- | 
| MaxLongVarChar | MaxLongVarcharSize | Default berubah dari 8190 menjadi 65535. | 
| ConnectionTimeout | LoginTimeout | Batas waktu koneksi yang sama, diganti namanya. Default ke 0 (tidak ada batas waktu). | 
| VpcEndpointUrl | vpc\_endpoint\_url |  | 
| SSLCertPath | TrustStore atau CaFile | Jalur ke sertifikat CA yang digunakan untuk memverifikasi server. Di Windows, atur ini di bidang Trust Store dari dialog pengaturan DSN; dialog tidak memiliki CaFile bidang. Jika keduanya ditetapkan, TrustStore ambil prioritas. | 

Opsi 1.x berikut tidak didukung di driver 2.x saat ini. Driver 2.x mengabaikannya, sehingga tidak memengaruhi koneksi Anda. Menghapusnya dari DSN Anda adalah opsional tetapi disarankan untuk menghindari kebingungan.
+ `SingleRowMode`— untuk membatasi memori klien, gunakan `StreamingCursorRows` sebagai gantinya.
+ `UseSystemTrustStore`Tidak didukung. Pada Windows, driver 1.x dapat memvalidasi sertifikat server terhadap penyimpanan sertifikat sistem Windows. Driver 2.x memvalidasi terhadap file sertifikat CA: driver menggunakan sertifikat root Amazon Redshift yang dibundel secara default, atau file yang Anda tentukan dalam atau. `TrustStore` `CaFile`
+ `BoolsAsChar`— jika aplikasi Anda mengandalkan kolom BOOLEAN yang dikembalikan sebagai `"0"` dan `"1"` string (`SQL_VARCHAR`), lemparkan kolom ke `VARCHAR` dalam kueri Anda, misalnya. `SELECT col::VARCHAR FROM ...`
+ `TextAsLongVarchar`,`CheckCertRevocation`,`EnableAwsSdkLogs`,`UseLogPrefix`,,`Locale`,`UseDeclareFetch`, `UseMultipleStatements``EnforceSingleStatement`, `EnableTableTypes` — tidak ada padanan dalam rilis saat ini. Tim Amazon Redshift sedang mengevaluasi ekuivalen atau alternatif untuk opsi ini di rilis mendatang.

Untuk daftar lengkap opsi 2.x yang didukung, lihat[Opsi driver ODBC](odbc20-configuration-options.md).

## Perubahan tipe data
<a name="odbc20-migrate-data-types"></a>

Tabel berikut menunjukkan pemetaan tipe data Amazon Redshift yang berubah di ODBC 2.x agar sesuai dengan spesifikasi ODBC. Sebagian besar aplikasi tidak terpengaruh karena mereka mengikat kolom berdasarkan indeks atau nama daripada berdasarkan kode jenis.


| Jenis data Amazon Redshift | ODBC 1.x | ODBC 2.x | 
| --- | --- | --- | 
| DOUBLE PRECISION | SQL\_FLOAT(6) | SQL\_DOUBLE (8) | 
| INTERVAL YEAR TO MONTH | SQL\_VARCHAR(12), teks | SQL\_INTERVAL\_YEAR\_TO\_MONTH(107), interval struct | 
| INTERVAL DAY TO SECOND | SQL\_VARCHAR(12), teks | SQL\_INTERVAL\_DAY\_TO\_SECOND(110), interval struct | 
| VARCHAR / CHAR / TEXT | Jenis yang luas (SQL\_WVARCHAR,SQL\_WCHAR,SQL\_WLONGVARCHAR); default UseUnicode=true | Jenis sempit (SQL\_VARCHAR,SQL\_CHAR,SQL\_LONGVARCHAR). Setel UseUnicode=true untuk mengembalikan tipe lebar. | 
| GEOMETRY/GEOGRAPHY(sebagaiSQL\_C\_BINARY) | Hex-encoded Tali ASCII | Byte biner mentah | 

`COLUMN_SIZE`Nilai yang dikembalikan oleh `SQLColumns` juga diubah untuk`GEOMETRY`,`GEOGRAPHY`, dan tipe `SUPER` data, yang sekarang mengembalikan NULL untuk menunjukkan kolom yang tidak berukuran sesuai spesifikasi ODBC. Aplikasi yang mengalokasikan buffer berdasarkan `COLUMN_SIZE` harus menangani NULL dengan menggunakan ukuran buffer default.

## Post-migration pemecahan masalah
<a name="odbc20-migrate-troubleshooting"></a>

Tabel berikut menjelaskan masalah umum yang mungkin Anda temui setelah bermigrasi dan cara mengatasinya.


| Gejala | Penyebab | Apa yang harus dilakukan | 
| --- | --- | --- | 
| Tabel eksternal tidak terlihat di browser skema | Tabel spektrum dan datashare dilaporkan sebagai EXTERNAL TABLE | Sertakan EXTERNAL TABLE dalam SQLTables jenis filter. | 
| kesalahan pyodbc pada kolom interval | pyodbc tidak mendukung jenis interval ODBC | Cast interval ke VARCHAR dalam kueri. | 
| Data karakter ditampilkan sebagai karakter tak terduga (mojibake) | UseUnicodedefault diubah menjadifalse. Aplikasi yang mengharapkan data karakter lebar (UTF-16) mungkin salah menafsirkan byte karakter sempit sebagai pasangan lebar, menghasilkan keluaran yang kacau. Data itu sendiri tidak berubah. | Setel UseUnicode=true di DSN Anda, atau perbarui aplikasi Anda untuk mengikat kolom sebagai SQL\_C\_CHAR gantinya. SQL\_C\_WCHAR | 
| Long-running kueri mengembalikan kesalahan batas waktu | SQL\_ATTR\_QUERY\_TIMEOUTsekarang ditegakkan. ODBC 1.x diam-diam mengabaikan pengaturan ini. | Tingkatkan atau hapus QueryTimeout dari DSN Anda, atau atur SQL\_ATTR\_QUERY\_TIMEOUT ke 0 di aplikasi Anda. | 
| Mengatur SQL\_ATTR\_CURRENT\_CATALOG pengembalian HY011 | Atribut tidak dapat diatur pada koneksi terbuka. Mengalihkan database pada koneksi terbuka tidak didukung. | Mengatur atribut sebelum menghubungkan, atau menutup dan membuka kembali koneksi pada database target. | 
| Koneksi macet di lingkungan dual-stack | Batasan dalam versi <= 2.1.16 | Upgrade ke 2.1.17 atau yang lebih baru. | 
| Penguraian pesan kesalahan mengembalikan hasil yang tidak terduga | Format pesan berubah; Kode SQLSTATE tidak berubah | Parse kode SQLSTATE bukan teks pesan. | 
| Data-at-execution pengikatan parameter berperilaku berbeda | SQL\_NEED\_LONG\_DATA\_LENberubah dari FALSE menjadi TRUE; aplikasi yang menggunakan sekarang SQL\_DATA\_AT\_EXEC harus memberikan total panjang data di depan | Atur nilai panjang StrLen\_or\_IndPtr saat mengikat SQL\_DATA\_AT\_EXEC parameter. | 
| Log driver tidak dihasilkan | LogLeveldan LogPath harus berada di bagian [ODBC] globalodbc.ini, bukan di bagian DSN individu | Pindahkan pengaturan logging dari DSN Anda ke [ODBC] bagian. | 

## Memutakhirkan dari versi ODBC 2.x yang lebih lama
<a name="odbc20-migrate-upgrade-2x"></a>

Jika Anda sudah menjalankan versi ODBC 2.x yang lebih lama, tingkatkan ke rilis terbaru. Untuk daftar lengkap penyempurnaan dan perbaikan bug di semua versi, lihat log on perubahan driver [Amazon Redshift ODBC](https://github.com/aws/amazon-redshift-odbc-driver/blob/main/CHANGELOG.md). GitHub

## Informasi selengkapnya
<a name="odbc20-migrate-more-info"></a>
+ [Mengonfigurasi koneksi untuk driver ODBC versi 2.x untuk Amazon Redshift](odbc20-install.md)
+ [Opsi driver ODBC](odbc20-configuration-options.md)
+ [Log perubahan driver ODBC Amazon Redshift](https://github.com/aws/amazon-redshift-odbc-driver/blob/main/CHANGELOG.md)