31 March 2010

No Error Message Available

Bagi seorang programmer menghadapi error atau kesalahan program adalah hal biasa, programming tool atau perkakas pemrograman yang cerdas akan memeri tahu programmer tentang kesalahan dalam program yang dibuatnya. Sehingga Programmer dapat memperbaiki kesalahan yang terjadi. Namun apa jadinya kalau alat pemrogramannya sendiri tidak tahu kesalahannya apa, dia hanya bisa menyalahkan?

Jangankan programmer yang baru belajar, Programmer berpengalamanpun akan pusing 21 keliling dibuatnya, bagaimana tidak, alat pemrograman atau programming tool yang menjadi sumber utama informasi kesalahan saja tidak dapat memberi tahu kesalahannya apalagi orang lain? Jangankan memperbaiki mengetahui masalahnya saja sulit.

Internet dapat dijadikan sebagai sumber informasi kedua, selain informasi kesalahan juga dapat dijadikan sumber informasi penyelesaian masalah.

Hal ini persis seperti yang saya alami, saya sempat berfikir dengan tools terbaru semua akan baik-baik saja ternyata tidak. Padahal kesalahan terjadi pada instruksi yang sangat sering digunkan dalam sebuah pemrograman, Koneksi Database.

"Provider=SQLOLEDB.1;User ID=sa;Password=cipluk;DataSource=(local);Initial Catalog=Nortwind;Integrated Security=False"

Instruksi diatas adalah perintah untuk melakukan hubungan dengan database, dalam bahasa pemrograman versi sebelumnya parameter tersebut dapat diterima, namun entah mengapa di versi terbaru justru tidak dapat diterima, development tool-nya bahkan tidak tahu kenapa. ketika perintah tersebut dijalankan akan muncul informasi No error message available, result code: DB_E_ERRORSOCCURRED(0x80040E21).

Ternyata eh ternyata, kesalahannya ada pada parameter keamanan terintegrasi alias Integrated Security. Kita memang dapat menghilangkan parameter tersebut sehingga program dapat jalan, tapi dalam kondisi tertentu kita perlu menentukan mekanisme keamanan yang digunakan.

Dalam kasus ini OledbProvider membutuhkan informasi provider mana yang harus digunakan dalam Integrated Security, dan pemberian nilai "true" pada parameter ini sebenarnya kita belum memberikan informasi provider mana yang harusnya digunakan oleh OledbProvider.

Dengan demikian, agar dapat menggunakan Integrated Security dengan OleDb, kita hanya perlu memberitahukan bahwa harus menggunakan Security Service Provider Interface (SSPI) dalam connection string:

"Provider=SQLOLEDB.1;User ID=sa;Password=cipluk;DataSource=(local);Initial Catalog=Nortwind;Integrated Security=SSPI"