04 Maret 2009

Error Program Pada SQL Server 2008 Express + Vista (Solusi)

Beberapa saat yang lalu program yang aku buat di lingkungan Windows XP (jalan, ok) dicoba dijalankan di komputer client yang pake Windows Vista. Hasilnya error (ga tau detailnya soalnya bukan aku yang install). Seletah aku coba di Windows Vista, mulai dari install SQL Server 2008 Express, OK, kemudian install programku beserta databasenya juga tidak ada masalah. Masalah muncul setelah program dijalankan, error kadang-kadang muncul pada saat proses string/yang berhubungan dengan karakter. Errornya kira-kira seperti ini: “Cannot resolve the collation conflict between "Latin1_General_CI_AI" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.”.
Pada komputer yang aku gunakan untuk bikin program (Windows XP) collation default untuk sistemnya adalah “SQL_Latin1_General_CP1_CI_AS”, sedangkan pada Windows Vista yang aku pake buat coba-coba collation-nya adalah “Latin1_General_CI_AI”. Ya jadinya gitu, sql servernya ngomel-ngomel $&@#*^... Setelah nyari kesana kemari, akhirnya ada cara buat solusi masalahnya, caranya adalah dengan menambahkan klausa COLLATE pada query. Misalnya: select id, name COLLATE Latin1_General_CI_AI from tbl1. Waduh, berarti musti ngubah semua querynya dong, aaaarrghh!
Aku cari aja jalan lain, soalnya lama banget ngubah querynya. Aku coba liat books online sql server ada dijelaskan tentang collation. Disitu dijelaskan bahwa collation merupakan “bit pattern” (sudah ngartikan ke Indonesia, artikan sendiri yach…) yang mewakili tiap karakter dan merupakan aturan-aturan bagaimana karakter tersebut diurutkan dan dibandingkan. Jadi kira-kira begini, ada satu collation yang menganggap sama huruf besar dan kecil, sedangkan ada collation lain yang membedakannya, selain itu juga ada collation yang melambangkan karakter kanji, arab, dan lain sebagainya. Wah sebelumnya ga pernah peduli, berhubung ada error yang musti diperbaiki, jadi peduli.
Setelah nyari lagi di books online ada perintah sql yang bisa mengganti collation dari suatu database yaitu ALTER DATABASE. Dengan perintah ini kita bisa mengganti collation dari database: ALTER DATABASE COLLATE . Pake ALTER TABLE juga bisa, tapi cuma per tabel saja, kalo ALTER DATABASE satu database. Tapi cara seperti ini sempat bikin ragu, setelah ganti collation ada masalah pada program ga ya?
Kemudian setelah berbagai cara diatas aku tempuh cara terakhir. Pada waktu install SQL Server 2008, ada pilihan untuk setting collationnya. Ini yang aku ubah sesuai dengan collation databaseku, jadi collation sistem mengikuti collation databaseku. Pada Windows Vista, collation defaultnya adalah Windows Collation (Latin1_General_CI_AI) sedangkan pada Windows XP defaultnya adalah SQL Collation (SQL_Latin1_General_CP1_CI_AS). Selesai masalahnya.

Tidak ada komentar:

Posting Komentar