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 24

Menggunakan API Helper Swagger pada .Net Framework

Di malam yang sunyi ini, aku sendiri. Eh, ini mau menulis lirik lagukah? Tidaakkk…..

Maafkan ketidakjelasan saya, maklum malam ini saya sedang sendiri di rumah. Istri dan anak saya sedang menginap di rumah mertua.

Lanjut ke inti tulisan aja. Jadi, malam ini saya ingin membagikan ilmu, bagaimana cara menggunakan Swagger sebagai API Helper untuk project API kita. Untuk yang ingin mengetahui lebih lanjut apa itu Swagger, bisa buka link berikut :

https://swagger.io/

Selanjutnya, saya akan menjelaskan langkah-langkah yang perlu dilakukan untuk menggunakan Swagger ini. Sebelumnya perlu diingat, di sini saya coba mempraktekkan penggunaan Swagger untuk project API versi .Net Framework dan saya sendiri menggunakan .Net Framework 4.6.1 untuk tulisan ini. Berikut langkah-langkahnya :

  • Buat sebuah Project API, create nama project “API” dan tunggu hingga proses selesai seperti berikut :

Create Project API

  • Buka Package Manager Console dan pastikan project yang terpilih adalah project API yang akan dipasang Swagger. Lalu ketikkan perintah Install-Package Swashbuckle kemudian tekan enter. Tunggu hingga proses instalasi paket selesai :

Install Package

  • Pastikan SwaggerConfig sudah ada pada Folder App_Start seperti berikut :

SwaggerConfig

  • Buka property Project. Kemudian pilih Build. Aktifkan XML Documentation file dengan memberi tanda centang :

XML Documentation File

Proses pemasangan sudah berhasil sampai di sini. Selanjutnya kita dapat melakukan testing dengan menjalankan API kita. Dan saat sudah berjalan, kita tambahkan swagger pada path (untuk kasus saya, path menjadi berikut : http://localhost:57897/swagger) sehingga Swagger UI dapat terpanggil seperti berikut :

Testing Swagger

Jika kita klik pada List Operations, kita akan melihat semua endpoint/fungsi pada API kita dan melakukan testing pada setiap endpoint yang ingin kita tes.

List OperationsDemikian tutorial singkat saya pada malam ini. Harap dimaklum karena saya juga sepertinya sudah mulai mengantuk (maklum, ternyata sudah berganti hari, hehe…). Semoga tulisan ini bermanfaat khususnya bagi yang sedang mengerjakan project API namun bingung untuk menyiapkan sebuah UI untuk keperluan testing maupun sebagai dokumentasi project.

Nantikan artikel selanjutnya dan terima kasih… 😀

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… 😀

Juni 19

Memindahkan commit git yang akan di-push dari satu branch ke branch lainnya

Malam yang dingin saat hendak berakhir pekan cocok untuk menuliskan sebuah artikel. Eh, ini curhat atau apa ya? Datar amat, hehe…

Oke, pada malam yang memang sudah terlalu larut malam ini, saya ingin membagikan sebuha tips bagaimana caranya memindahkan sebuah commit-an atau beberapa commit-an dari suatu branch untuk kemudian di-push ke branch lainnya. Ya, tentu saja tips ini saya tujukan untuk pengguna source control git manapun. Baik itu pengguna github, gitlab, bitbucket, ataupun lainnya yang menggunakan engine git sebagai source controlnya.

Lalu bagaimana saya sampai kepikiran untuk menuliskan artikel perihal ini ya? Jadi ceritanya begini. Pada suatu waktu, saya mendapatkan anggota baru pada tim saya (sekarang ini posisi saya sebagai Team Leader). Saya jelaskan bagaimana SOP melakukan pekerjaan pada tim saya tersebut (tentu saja best practice untuk development di tim saya). Tentu semua pengenalan baik itu flow bisnis aplikasi maupun segala macam SDLC di sini, dan apapun itu yang terkait dengan pekerjaan dalam tim saya. Di tim saya, saat hendak melakukan development, saya selalu meminta kepada anggota tim untuk melakukan clone terhadap branch yang sudah saya buat sesuai dengan Story yang ada (di sini saya melakukan branching untuk masing-masing Story saat setiap kali sebuah Story berikut Subtask-subtasknya akan dikerjakan). Pada suatu hari, saya berikan task kecil (sebagai pengenalan untuk anggota tim baru). Beberapa hari kemudian dia meminta saya melakukan concall (conference call) karena sepertinya dia lupa untuk melakukan checkout terlebih dahulu. Dan parahnya lagi, dia baru sadar kalau dia melakukan beberapa commit yang belum di-push (pada saat itu 5 commit-an dengan banyak perubahan code di beberapa file) pada branch yang salah (branch development bukan branch dari Story). Dia hendak akan melakukan perubahan ulang, namun saat itu saya cegah karena saya dapat memindahkan commit-an tersebut ke branch yang seharusnya. Alhasil, dengan menggunakan TeamViewer saya melakukan remote desktop laptopnya (saat itu kita sedang WFH karena Pandemi). Dan commit-an nya pun berhasil saya selamatkan tanpa harus menulis ulang perubahan yang telah dilakukan dari awal.

Lalu, bagaimana cara saya melakukannya?

Berikut kita akan coba hal serupa seperti yang saya lakukan pada kasus tim saya :

  • Di sini kita coba pada sebuah project yang sudah saya siapkan. Teman-teman dapat meng-clone project saya pada github saya di :

https://github.com/Agunahwan/api1

  • Jika teman-teman sudah melakukan clone project, maka ketika membuka project tersebut akan terlihat seperti ini :

API 1

  • Kita buka ValuesController dan lakukan perubahan pada function Put dengan mengganti nilai balikan dan isinya menjadi seperti berikut :

Change Code

  • Pastikan tidak terjadi error saat rebuild atau build ulang solution. Kemudian kita lakukan commit seperti berikut :

Build Success

Change Put

Commit success

Jika teman-teman melakukan clone project secara default, maka branch dari project tersebut akan berada pada branch master. Di sini kita akan mencoba untuk memindahkan semua commit-an yang ada pada branch master untuk kemudian di-push kepada branch development pada server git. Pada langkah-langkah berikutnya merupakan proses mulai pemindahan commit-an nya :

  • Rename branch master lokal kita dengan branch development. Disini kita rename terlebih dahulu branch master agar di langkah selanjutnya kita dapat dengan mudah menemukan branch mana yang akan kita pindahkan. Terlebih bila dalam suatu project telah memiliki banyak sekali branch yang ada, baik fitur, bugs fixing, maupun lainnya. Jika branch sudah di-rename, maka akan terlihat seperti berikut :

Rename Branch

Rename Result

  • Teman-teman buka folder solution. Di sana teman-teman akan melihat sebuah folder bertipe hidden dengan nama .git

Folder git

  • Buka folder .git dan edit file config

Config File

  • Cari branch development dimana memiliki remote origin & merge refs/heads/master. Ubah refs/heads/master menjadi refs/heads/development pada branch development kemudian simpan :

Branch Development

Update Branch Development

  • Saat kita kembali pada Visual Studio, maka akan terlihat bahwa kita sudah berada pada branc development di lokal yang terhubung dengan branch development pada server :

Branch Development VS

  • Kita lakukan synchronize (fetch=>pull=>push dalam 1 perintah) pada git :

Synchronize git

  • Jika teman-teman melihat kembali history branch development pada remote/server, maka teman-teman akan melihat bahwa commit-an kita tadi yang awalnya berada pada branch master, sudah masuk pada branch development pada server :

History Remote Development

Demikian tips dari saya berdasarkan pengalaman yang dialami tim saya (sebenarnya saya juga pernah mengalami hal yang sama sebelumnya, hehe…). Semoga memberikan manfaat buat teman-teman sekalian terkhusus bagi yang mengalami hal yang sama.

Terima kasih dan selamat malam… 😀

 

Juni 18

Mencari History Query Yang Memperberat CPU

Di pagi yang cerah ini saya melihat-lihat blog dahulu. Dan ternyata, eh sudah 4 tahun lebih saya tidak membuat artikel, hmmm….

Setelah dpikir-pikir, sepertinya ini bermula saat saya mulai sibuk dalam pencarian rumah. Setelah rumah dapat, Alhamdulillah anak pun diberi/alias istri saya hamil. Namun, karena suatu kondisi penyakit sejak lahir, maka pengobatan panjang dimulai hingga anak saya berusia 1 tahun. Eh, kok malah curcol, hehe…

Oke, kita masuk kembali ke inti permasalahan yang akan saya bahas kali in. Next saya coba bagi pengalaman saya mengenai pengobatan panjang anak saya sejak lahir hingga sembuh. Namun kali ini saya coba sharing sedikit query untuk permasalahan yang saya hadapi dan mungkin juga teman-teman hadapi. Jadi, pada pekan lalu saat saya selesai bekerja, di grup kantor ramai dikarenakan ada sesuatu yang membuat CPU Server DB menjadi high hingga 90%. Nah, kita bingung ini aplikasi mana yang menyebabkan CPU Server DB high. Semua mencari mulai dari scheduler, job SQL, hingga aplikasi-aplikasi yang jalan pada saat jam tersebut. Lalu setelah terbantukan oleh paman Google, akhirnya setidaknya saya menemukan query untuk setidaknya membantu saya dalam proses pencarian query yang menyebabkan CPU high. Berikut query yang saya gunakan :

Pada last_execution_time teman-teman cukup filter query apa saya yang dieksekusi pada jam tersebut. Pada kasus saya (dalam hal ini yang saya eksekusi sekarang tanpa filter waktu eksekusi, dikarenakan saat kejadian saya g sempat untuk capturenya), berikut hasil yang akan tampil :

Query History Execution

Pada hasil di atas, kita dapat melihat query apa yang menyebabkan CPU saya sangat tinggi, yakni query teratas. Dimana di sini saya memakai total_worker_time untuk pengurutan. total_worker_time adalah jumlah waktu yang dihabiskan untuk menjalankan kueri sejak paket dikompilasi, misalnya : jika paket telah dijalankan 100 kali sejak dikompilasi, dan setiap kali dijalankan hingga 10 ms, total_worker_time akan menjadi 1000 ms. total_worker_time ini cocok digunakan untuk pengurutan kejadian terutama kejadian spike yang saya alami terhadap CPU Server DB saya.

Query yang saya gunakan ini disebut DMV (Dynamic Management Views). Kalau teman-teman mau tahu lebih lanjut apa itu DMV, apa saja views yg bisa digunakan, juga bagaimana cara penggunaannya, dan banyak lainnya, teman-teman bisa mengunjungi langsung artikel DMV tersebut di :

https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/execution-related-dynamic-management-views-and-functions-transact-sql?view=sql-server-ver15

Mungkin sekian dulu dari saya. Semoga sedikit tulisan ini bermanfaat buat teman-teman khususnya yang menngalami kejadian yang sama dengan saya.

Terima kasih & selamat bekerja.. 😀

Maret 22

Query Detail Job SSIS

Hari ini saatnya saya untuk deploy SSIS yang telah saya buat. Namun, saya tidak tau SSIS ini berjalan pada job apa dan schedule berjalan kapan. Dikarenakan saya tidak memiliki akses untuk melihat job di production (SQL Server production saya memiliki hak akses Select DB untuk database msdb), maka jalan satu-satunya untuk melihatnya yaitu melalui query SQL Server. Setelah pencarian yang keras (hehe… :D), akhirnya saya mendapatkan query untuk mencari informasi detail tentang Job yang menjalankan SSIS yang saya inginkan. Berikut query nya :

Query di atas dengan asumsi kita tidak tahu nama job yang menjalankan SSIS yang kita inginkan. Mudah-mudahan query di atas bermanfaat buat teman-teman semua. Selamat beraktifitas. 😀

NB : Query saya dapatkan dari sumber berikut dengan beberapa modifikasi dan penggabungan beberapa query :

https://www.mssqltips.com/sqlservertip/2561/querying-sql-server-agent-job-information/

Maret 16

Print Halaman dengan JQuery

Cerita dimulai saat seminggu yang lalu teman saya ada kesulitan dengan tugasnya. Dia disuruh buat web agar saat tekan tombol langsung tampil Print. Dikarenakan saat itu saya sedang banyak sekali tugas menumpuk, jadi saya belum sempat bantu saat itu. Sebagai gantinya, saya akan memberikan cara & contoh pada tulisan saya kali mengenai tugas teman saya tersebut. Tapi, terlebih dahulu teman-teman perlu download jquery pada link berikut dikarenakan saya akan menggunakan jquery pada tulisan ini :

https://jquery.com/download/

Untuk print area pada html, saya menggunakan library printThis. Teman-teman dapat download terlebih dahulu pada link berikut :

https://github.com/jasonday/printThis

Setelah semua persiapan selesai, saatnya kita mulai untuk pembuatan htmlnya. Berikut langkah-langkahnya :

  1. Buat sebuah halaman, misal saya namakan index.html. Masukkan kode html berikut :

2. Buat sebuah folder, beri nama js. Folder ini yang akan kita gunakan sebagai tempat untuk menaruh Jquery dan printThis.js yang telah teman-teman download tadi.

  1. Teman bisa langsung buka index.html tadi untuk melihat hasilnya. Akan tampil seperti berikut :

Print_Jquery

Apa yang terjadi saat tombol Print Area ditekan? Yang akan tercetak hanya area yang berada pada div dengan id printArea. Ini dikarenakan penggunaan fungsi printThis() yang kita gunakan dari library printThis.js. Teman-teman dapat mengkustomisasi area mana yang akan diprint dengan menggunakan id, class, dan macam-macam lainnya dalam area div, table, dan lainnya pula. Jadi tidak terbatas hanya id dan div saya.

Lalu apa yang terjadi saat tombol Print All ditekan? Yang akan tercetak adalah satu halaman penuh. Ini dikarenakan penggunaan perintah print() yang ada pada javascript. Perintah print() sebenarnya bukan merupakan perintah dari Jquery dikarenakan itu perintah javascript dasar. Lalu kenapa kita memerlukan jquery? Jquery di sini saya gunakan untuk mentrigger perintah click() pada tombol. Selain itu, printThis() yang teman-teman gunakan memerlukan Jquery sebagai library dasarnya.

Untuk kode lengkapnya, teman-teman dapat download pada link berikut :

https://drive.google.com/file/d/0B9_2JJSi4W6RYzZtUndIa3VySlU/view?usp=sharing

Mungkin sekian tulisan dari saya, mudah-mudahan bermanfaat buat teman-teman yang kesulitan dalam membuat perintah print. Terima kasih dan selamat beraktifitas. 😀

Januari 27

Membuat Menu Treeview dengan C#

Di hari yang cerah ini, waktunya saya untuk berbagi. Jadi ceritanya teman saya ada permasalahan dalam tasknya, dia disuruh untuk membuat menu dengan Treeview namun menu tersebut harus dinamis. Nah, di sinilah tantangannya. Saya pun ikut mencari cara untuk permasalahan ini. Dikarenakan dinamisnya dan menu-menu itu pun dapat memiliki anak-anak yang kita tidak tahu cabangnya sampai level berapa. Saya memikirkan untuk membuat sebuah fungsi rekursif untuk mengisi setip node anak pada TreeView ini. Apa itu fungsi rekursif? Fungsi rekursif merupakan sebuah fungsi yang memanggil dirinya sendiri. Di dalam fungsi tersebut diharuskan adanya sebuah kondisi yang memungkinkan untuk keluar dari fungsi. Bila tidak, maka tentunya akan menyebabkan hang dikarenakan pemanggilan yang tak terhenti. Untuk membuatnya, berikut langkah-langkah yang bisa teman-teman ikuti :

1. Buat sebuah project pada Visual Studio. Di sini saya menggunakan Visual Studio 2010 dengan .NET Framework 4.0. Pilih Jenis Project ASP Web Empty Application.

Create Project

2. Tambahkan Connection String berikut pada Web.config

3. Tambahkan class DataAccess pada project. Class dapat diakses pada link berikut :

DataAccess.cs

4. Tambahkan sebuah halaman Web dan tambahkan sebuah TreeView dengan nama tvMenu.

TreeViewCode

TreeView

5. Isi code Default.aspx.cs dengan code berikut :

6. Buat database MenuTreeView. Buat table tblMenu dengan Query berikut :

7. Buat sp sp_GetMenuList dengan query berikut :

8. Isi table tblMenu dengan data seperti berikut :

Isi Table

9. Coba jalankan.

Saya akan menjelaskan beberapa code yang saya buat.

Pada fungsi GetData di atas, saya membuat fungsi ini menghasilkan tipe data DataTable. Kita akan mendapatkan data dari hasil execute sp_GetMenuList yang akan kita gunakan sebagai data acuan untuk me-list menu.

Pada bagian Page_Load di bagian code di atas, saya mendeklarasikan sebuah variable dengan tipe DataTable. Dari hasilnya, data tersebut kemudian saya filter kembali hanya untuk yg parent saja.

Pada code di atas, saya hapus terlebih dahulu semua node yg ada pada TreeView. Ini untuk menghindari duplicate node saat AutoPostBack ataupun Refresh halaman. Pada bagian for ini, saya ingin membuat node Parent dari data yang telah kita filter pada baris code sebelumnya. Untuk data-data yang memiliki alamat URL, saya tambahkan link URL tersebut pada node. Bila tidak ada, saya jadikan ActionSelect node agar meng-expand Tree saat diklik.

Pada bagian di ataslah saya mendefinisikan setiap node anak sacara rekursif pada fungsi setChildNode

Fungsi di atas yang digunakan untuk mendefinisikan node anak dengan kondisi dimana node tersebut masih memiliki anak. Jika tidak, maka fungsi rekursif akan keluar. Bila benar, saat dijalankan akan tampil seperti berikut :

Running

Demikian sharing dari saya, mudah-mudahan bermanfaat untuk teman-teman yang mengalami masalah serupa. Selamat bekerja… 😀

Source Code lengkap dapat di download di sini :

https://drive.google.com/file/d/0B9_2JJSi4W6RT01ybmJtWEcwYWs/view?usp=sharing

SQL dapat di download di sini :

https://drive.google.com/file/d/0B9_2JJSi4W6RdmF6dnBjVlF2b1U/view?usp=sharing

Desember 15

Mengganti User pada Visual Studio

Cerita berawal ketika saya mau login untuk Visual Studio 2015, tapi ternyata versi trial saya sudah habis. Lalu bos memasukkan User loginnya ke Visual Studio saya agar saya tetap dapat bekerja (Maklum pada saat itu versi teranyar dari Visual Studio ini masih tahap pembelian lisensi oleh kantor). Setelah lisensi ada, saya mau login menggunakan user saya, tapi ternyata tidak bisa karena masih teridentifikasi user bos saya. Saya sudah Uninstall dan Install ulang Visual Studio 2015 tetap saja tidak bisa. Kira-kira seperti ini errornya :

Error User Visual Studio

Singkat cerita, saya akan men-share cara untuk mengubah user yang sudah terlanjur login pada Visual Studio dalam kasus ini Visual Studio 2015 yang sudah saya praktekan ternyata berhasil. 😀

Langkah-langkah yang saya lakukan berikut :

  1. Pastikan Visual Studio ditutup atau tidak dalam keadaan terbuka.

  2. Buka Developer Command Prompt for VS2015 yang ada pada folder Visual Studio 2015 sebagai administrator.

Developer Command Prompt Administrator

  1. Tunggu proses yang dilakukan Command Prompt saat pertama dibuka. Kemudian ketik perintah berikut ‘devenv /resetuserdata’ pada layar Command Prompt dan Enter.

Command Prompt

  1. Buka kembali Visual Studio 2015 dan login dengan Usermu.

Itulah cara yang berhasil saya gunakan, mudah-mudah artikel ini membantu untuk teman-teman yang memiliki masalah yang sama. 😀

Desember 4

Mencari Posisi SSIS pada SQL Server

Siang yang cerah untuk melakukan testing UAT SSIS (maklum di kantor saya sedang ada migrasi DTS ke SSIS). Ternyata SSIS yang saya testing tidak ada dalam folder yang ada dalam list. Saya pun disuruh untuk mencari di semua folder (alamak, banyak banget foldernya). Setelah tanya ke paman googling akhirnya saya menemukan query untuk mencari lokasi SSIS dengan mudah. Berikut querynya :

Mudah-mudahan query tersebut juga membantu teman-teman yang sedang melakukan kegiatan sama dengan saya. Selamat beraktifitas. 😀