Juni 30

Menggunakan SQL Search untuk mencari kata di database

Halo semua, pada malam ini saya ingin membagikan sebuah software yang berguna banget buat saya pribadi saat saya kesulitan dalam pekerjaan untuk mencari sebuah tabel dalam sekumpulan stored procedure, function, maupun view.

Jadi, ceritanya begini, dulu saya pernah mengerjakan sebuah project dimana kalau dikategorikan termasuk project maintenance. Dan sudah bisa ditebak, yuph, dalam project itu aplikasi sudah ada dengan berbagai flow di dalamnya termasuk berbagai macam SP, function, dan view. Aplikasinya pun terikat/terhubung dengan beberapa aplikasi lainnya dan pastinya terdapat beberapa database di dalamnya (satu aplikasi satu database saat itu). Dalam task maintenance tersebut, terkadang saya mendapatkan task dimana saya diharuskan untuk menambahkan sebuah kolom dalam beberapa tabel. Dan sialnya, banyak stored procedure melakukan script insert tanpa menyebutkan detail kolom-kolom yang akan diinsert. Dalam kasus saya, insert yang dipakai biar ada gambaran contohnya yaitu insert into table1 select * from table2. Tahukan apa yang akan terjadi saat terjadi penambahan kolom pada table2 tapi tidak terjadi penambahan kolom yang sama pada table1? Yuph, akan terjadi error.

Nah, untuk mempermudah saya mencari query apa aja yang terhubung dengan table yang akan saya ubah (dalam kasus td table2), saya menggunakan tools ini untuk mencarinya. Tools tersebut adalah SQL Search dari RedGate. Eits… jangan khawatir, tools tersebut free kok, namun teman-teman mesti submit data dahulu saat mengunduhnya. Tools tersebut sebagai plugin pada aplikasi Ms SQL Server Management Studio. Berikut link untuk mengunduh toolsnya :

https://www.red-gate.com/products/sql-development/sql-search/installer/

Adapun setelah teman-teman melakukan instalasi, maka menu akan tampil pada toolbar SSMS. Kira-kira akan seperti ini tampilannya :

SQL Search

Dan cara penggunaannya pun terbilang mudah, teman-teman hanya perlu melakukan klik pada menunya seperti yang saya tandai pada gambar di atas. Maka tampilan akan seperti gambar di atas. Kemudian pilih database yang akan dilakukan pencarian, kemudian masukkan kata/kolom/tabel/apapun itu yang akan dicari pada kotak pencarian. Maka list hasil akan terlihat. Teman-teman pun dapat melakukan penyaringan tipe object apa aja yang akan dicari. Dalam contoh saya, saya ingin mencari semua yang berhubungan dengan kata name, baik itu kolom maupun tabel. Maka tampilan di laptop saya, hasil akan seperti berikut :

Result search

Dalam hasil pencarian tersebut akan terlihat semua kata yang terkait dengan kata “name”, baik itu sebagai kolom dalam sebuah tabel, maupun parameter & isi dari sebuah stored procedure.

Nah, untuk kasus awal saya sebelumnya, saya menggunakan kata kunci “SELECT * FROM table2” untuk pencarian sehingga saya mengetahui semua stored procedure dan fungsi, bahkan trigger yang melakukan insert dari table2 menggunakan query select * from.

Demikian sedikit info untuk sebuah tools yang sering saya pakai untuk pencarian kata terkait database SQL Server. Mudah-mudahan bermanfaat untuk teman-teman yang mengalami masalah yang sama dan tools tersebut menjadi solusi jitu untuk permasalahan teman-teman juga.

Terima kasih dan selamat malam… 😀

Juni 24

Query untuk mencari kolom berdasarkan value

Malam yang dingin, diiringi kopi hangat, suasana yang sangat cocok untuk berbagi. Hari ini saya mendapatkan sebuah request untuk mencari tahu mengapa permasalahan beberapa data yang diminta oleh client. Namun, saya bukan ingin membahas permasalahan apa yang terjadi, tapi dalam pencarian permasalahan tersebut saya dihadapkan pada sebuah permasalahan lain. Apakah itu? Jreng…jreng…hehe…

Yuph, data yang saya dapat ini berada pada tabel apa sih? Kalaupun dapat tabelnya, di kolom apa? Saya pun berinisiatif untuk membuat sebuah Stored Procedure untuk memecahkan masalah saya itu. Nah, pada tulisan saya kali ini, saya ingin membagikan Stored Procedure yang telah saya buat tersebut. Mungkin bisa jadi teman-teman mengalami permasalahan yang sama. Berikut query full Stored Procedure saya :

Di sini coba saya jelaskan beberapa parameter yang digunakan dalam Stored Procedure tersebut :

  • DatabaseName : Parameter ini sifatnya mandatory. Teman-teman harus mengisi pencarian data tersebut akan dilakukan pada database apa.
  • Value : Parameter ini bersifat optional dengan default value nya string kosong. Parameter ini diisi dengan value yang akan dicari.
  • TableName : Parameter ini bersifat optional dengan default value nya null. Parameter ini diisi dengan nama tabel tempat akan dilakukan pencarian. Bila teman-teman tidak menggunakan parameter ini, maka secara default pencarian dilakukan pada semua tabel yang ada pada database yang teman-teman isi.
  • TableSchemaName : Parameter ini bersifat optional dengan default value nya dbo. Parameter ini diisi dengan nama skema tabel tempat akan dilakukan pencarian.

Untuk contoh cara penggunaannya saya akan membagi dengan beberapa case berikut :

  • Kita ingin mencari data dengan value ‘Pusporenggo’ di database Akademik berada pada kolom dan tabel apa. Pencarian dilakukan pada semua tabel dengan schema default yakni dbo, sehingga kita dapat mengetahui semua table beserta kolomnya yang memiliki value tersebut. Maka perintahnya akan menjadi berikut :

    Dan hasilnya akan seperti berikut :
    Sample 1
    Maka jika kita lakukan perintah SELECT dengan filter pada kolom tersebut di tabel tersebut, maka hasilnya akan seperti berikut :
    Result Sample 1

  • Kita ingin mencari data dengan value ‘Pusporenggo’ di database Akademik berada pada kolom apa. Pencarian dilakukan pada tabel siswa dengan schema default yakni dbo, sehingga kita dapat mengetahui semua kolom yang memiliki value tersebut. Maka perintahnya akan menjadi berikut :

    Dan hasilnya akan seperti berikut :
    Sample 2
    Maka jika kita lakukan perintah SELECT dengan filter pada kolom tersebut di tabel tersebut, maka hasilnya akan seperti berikut :
    Result Sample 2

Bila teman-teman kesulitan untuk menyalin query Stored Procedure saya, teman-teman juga dapat melakukan download querynya pada link berikut :

https://drive.google.com/file/d/1ZydC2zpmp1wSlAyh0ZIfOCuEHCNUJHWo/view?usp=sharing

Akhir kata, semoga tulisan saya dapat bermanfaat khususnya bagi yang mengalami permasalahan yang sama. Terima kasih dan selamat beristirahat…. 😀

 

 

Juni 23

Function SQL untuk generate random date

Sore menjelang malam ini waktunya untuk menulis kembali. Kali ini saya ingin membagikan sebuah function yang saya buat untuk generate random date. Kok bisa ada keinginan untuk buat function ini? Jadi ada sejarahnya nih kenapa buat. Jadi gini, beberapa hari yang lalu, saya ada sebuah task untuk mengupdate beberapa data (kolom bertipe date) menjadi berisi bermacam-macam tanggal dalam 1 bulan. Data ada kisaran 1.500 jumlahnya (gile aja kan klo update satu2). Langsung aja, ini function yang saya buat untuk generate random date :

Namun, sebelum dapat menggunakan fungsi tersebut, teman-teman harus membuat sebuah view untuk melakukan generate GUID. Berikut view yang saya buat :

Nah, untuk penggunaanya gimana nih? Jadi teman-teman bisa bervariasi menggunakannya :

  • Mengisi kedua parameter dengan value yang diinginkan

Custom Value kedua parameter

  • Mengisi parameter pertama dengan default value (min date)

Dafault value pada parameter pertama

  • Mengisi parameter kedua dengan default value (getdate)

Dafault value pada parameter kedua

  • Mengisi kedua parameter dengan default value (min date pada parameter pertama & getdate pada parameter kedua)

Dafault value pada kedua parameter

Mungkin sekian dulu tulisan kali, pendek namun mudah2an bermanfaat. Terutama bagi yang mengalami kasus yang sama.

Terima kasih & selamat beristirahat… 😀