Rabu, 07 Maret 2012

Membuat Alias di SQL Server 2008 R2

Manfaat dari penggunaan alias untuk koneksi database ke SQL Server * ketimbang langsung mengarahkannya ke Nama server atau IP address dimana SQL server berada * salah satunya adalah kita tidak perlu mengubah-ubah string koneksi di aplikasi yang kita buat jika ada perubahan di sisi server (Nama atau IP Address-nya).

Mungkin bagi rekan yang pernah memanfaatkan Crystal report di programnya (bawaan MV Studio 2005, saya tidak tau untuk versi di atasnya apakah masalahnya masih sama)  akan tau betapa bergunanya pemanfaatan alias ini. di MVS 2005 koneksi DB dari crystal report walaupun sudah di ubah di coding-nya untuk diarahkan ke mechine DB yg baru yang kita gunakan, tetap saja kita masih harus mengubah koneksi di Report Designnya ke mechine yang baru juga. Dengan memanfaatkan Alias ini perosalan tersebut bisa diatasi. * atau bagi yang tau caranya yang lebih smart mohon di sharing di sini, untuk masalah koneksi ke Crystal Report *.

Membuat Alias di SQL Server 2008 R2 sebenarnya sama saja dengan versi-versi SQL sebelumnya, hanya saja kalau di Versi 2005 ke atas untuk melakukan konfigurasi microsoft sudah membundle menjadi satu di SQL Server Configuration Manager. Secara default biasanya ada di sub menu START => All Programs => Microsoft SQL Server 2008 R2 => Configuration Tools => Sql Server Configuration Manager.

Gambar 1 : Jendela utama Sql Server Configuration Manager

Kemudian di jendela utama tersebut, Klik Kanan di Sub Menu Aliases ==> kemudian pilih New Alias..., akan tampil jendela di bawah ini

Gambar 2 : Jendela untuk memasukan Alias Name, Port Name, Protocol dan Server

Alias Name :
                       dalam contoh ini digunakan nama alias PTXXX>
Port No      : < Isikan Port No, sesuaikan dengan port TCP/IP yg anda gunakan,
                       cara mengetahui no port yang digunakan ikuti langkah-langkah
                       pada gambar 3 >
Protocl       : < Pilih TCP/IP atau protocol lain yang anda kehendaki,
                       jika anda memilih protocol TCP/IP secara otomatis
                       Field Port No harus anda isi>
Server        : < Tentukan dimana server terletak, pada kasus ini
                       server berada di mecihne local, pada kasus  mungkin berbeda >.

Gambar 3 : Langkah-langkah untuk mengetahui port TCP yang digunakan pada SQL Server 2008 R2, 1. Pada Sql Server Network Configuration , single klik Instance yang anda inginkan (Protocol For MSSQLSERVER, dalam kasus ini), 2. Double Click Protocl TCP/IP di jendela sebelah kiri, 3. Klik Tab IP Address di jendela TCP/IP Properties.

Setelah langkah diatas dilakukan sekarang tinggal mencoba konek ke SQL Serevr dengan memanfaatkan Alias yang baru saja kita buat, cukup dengan mengganti bagian : Data Source=(local) dari (local) ke Alias yang dibuat yaitu Data Source=PTXXX.  Thank's Semoga bermanfaat..

Jumat, 02 Maret 2012

Spesial karakter Bracket "[" versus COALESCE

Misalkan kita mempunyai tabel data Barang di SQL SERVER 2008 R2, katakanlah nama tabel tersebut MST_ITEM, yang mempunyai kolom ITEM_CODE, ITEM_NAME, ITEM_SATUAN. berikut ini list hasil setelah kita lakukan query dengan menggunakan perintah SELECT * FROM MST_ITEM :

ITEM_CODE          ITEM_NAME          ITEM_SATUAN
==============================================
0101001              Pad Cat                       EA
0101002              Oil Filter [Cat]             EA
0101003              Element AS [CAT]      EA

perhatikan karakter "[" "]" yang ada pada kolom ITEM_NAME, inilah inti yang ingin kami sampaikan dari tulisan ini. pada kasus saya, saya mempunyai sebuah Stored Procedure(SP) dengan parameter Filter berdasarkan ITEM_NAME nya, jika user tidak memberikan nilai pada parameter ITEM_NAME maka yang ditampilkan adalah seluruh data (artinya tidak ada data yang difilter), akan tetapi jika ada nilai parameter yang diberikan maka data yang ditampilkan adalah berdasarkan nilai filter yang diberikan. Isi transact_sql di SP tersebut kira-kira seperti di bawah ini,

CREATE PROCEDURE GET_ALL_ITEM_WITH_FILTER
   @ITEM_NAME VARCHAR(100)=NULL
AS
BEGIN
   SELECT * FROM MST_ITEM WHERE ITEM_NAME LIKE '%'+ COALESCE(@ITEM_NAME,
   ITEM_NAME) +'%'
END

Saat SP dijalankan dengan nilai parameter ITEM_NAME Null (artinya tidak ada data yang difilter), data yang tampil hanya item Pad Cat saja,


ITEM_CODE          ITEM_NAME          ITEM_SATUAN
==============================================
0101001              Pad Cat                       EA

sedang ke-2 item lainnya tidak muncul. ketika saya analisa kembali SP saya, disana tidak ada yang mencurigakan, semuanya berjalan dengan normal. akhirnya saya amati data yang ada dan tuduhan pun saya alamatkan ke karakter "[" atau bracket siku yang ada pada Item Name, pada kasus saya kebetulan user mengeluhkan bahwa ada item data yang tidak muncul, dari hasil laporannya ternyata Item namenya tersebut mengandung spesial karakter barcket "[" "]" sementara data yang tampil seluruhnya tidak ada yang mengandung bracket siku pada item namenya. lalu kemudian saya coba untuk menghilangkan karakter "[" dan "]" dari salah satu Item Name yang tidak muncul. Hasilnya, ternyata data tersebut sekarang muncul.

Kesimpulan sementara saya * hal ini karena saya yakin tidak ada yang salah dengan query saya di SP * adalah Bracket siku bermasalah dengan COALESCE, saya tidak tahu apa ada orang lain yang mengalami masalah yang sama dengan saya, saya juga tidak tahu apakah ini bug dari function COALESCE di SQL Server atau karena saya salah didalam memanfaatkan fungsi COALESCE, sebab ketika tulisan ini dibuat saya belum sempat mencarinya di internet.

Setitik masalah yang terpecahkan ini *paling tidak bagi saya* semoga bermanfaat bagi yang membutuhkan, Terimakasih.