Saat bekerja dengan database besar di SQL Server, Anda mungkin menghadapi situasi di mana Anda perlu menemukan kolom tertentu di semua prosedur tersimpan. Ini bisa muncul jika Anda memfaktorkan ulang kode Anda, mencari bug, atau sekadar ingin tahu tentang penggunaan kolom dalam prosedur Anda. Apapun alasannya, mencari kolom di SQL Server mungkin terlihat seperti tugas yang sulit, namun jangan khawatir—dengan skrip SQL yang tepat, hal ini dapat dilakukan dengan cepat dan mudah.
Kita dapat mencapainya dengan menggunakan tabel `INFORMATION_SCHEMA.ROUTINES` atau `sys.sql_modules`, tempat teks setiap prosedur disimpan di server SQL.
[b] Mari kita lihat secara praktis bagaimana menemukan kolom di semua prosedur tersimpan di SQL Server. [/B]
Ikhtisar Solusi
Strategi dasar kami adalah menanyakan tabel `INFORMATION_SCHEMA.ROUTINES` (atau `sys.sql_modules`) untuk mengambil definisi setiap prosedur tersimpan. Kita kemudian dapat menggunakan pernyataan `LIKE` untuk mencari kolom kita dalam definisi ini. Sesederhana itu!
Jika Anda ingin mencapai hal ini di lingkungan SQL Server Anda sendiri, Anda dapat menggunakan kueri umum ini:
SELECT
ROUTINE_NAME, ROUTINE_DEFINITION
FROM
INFORMATION_SCHEMA.ROUTINES
WHERE
ROUTINE_DEFINITION LIKE '%ColumnName%'
AND ROUTINE_TYPE='PROCEDURE'
Penjelasan Kode Langkah-demi-Langkah
1. Memilih Informasi yang Diperlukan
Kita mulai dengan memilih `ROUTINE_NAME` dan `ROUTINE_DEFINITION` dari `INFORMATION_SCHEMA.ROUTINES`.
2. Menyaring Definisi
Kemudian, kita menggunakan klausa `WHERE` untuk memfilter `ROUTINE_DEFINITION`. Kami hanya tertarik pada baris yang `ROUTINE_DEFINITION`nya berisi nama kolom kami.
3. Membatasi Prosedur Tersimpan
Terakhir, kita menambahkan kondisi lain di klausa `WHERE` untuk membatasi kumpulan hasil kita hanya pada rutinitas yang merupakan prosedur tersimpan.
Pendekatan Alternatif menggunakan sys.sql_modules
Kueri di atas akan berfungsi dengan baik untuk menemukan nama kolom dalam prosedur tersimpan. Namun, ada cara alternatif untuk mendapatkan informasi yang sama. Kita dapat menggunakan tampilan sistem `sys.sql_modules` untuk mendapatkan teks modul SQL Server. Ini mencakup definisi prosedur tersimpan, fungsi, pemicu, dll.
SELECT Object_name(sm.object_id) as name, sm.definition FROM sys.sql_modules AS sm JOIN sys.objects AS o ON sm.object_id = o.object_id WHERE sm.definition like '%ColumnName%' AND type_desc = 'SQL_STORED_PROCEDURE'
Memanfaatkan Wildcard SQL
Wildcard SQL bisa sangat berguna di sini. Jika Anda tidak yakin apakah spasi atau karakter lain mungkin mendahului atau mengikuti nama kolom, Anda dapat menggunakan karakter pengganti `%` seperti `'% Nama Kolom %'` untuk mencakup karakter apa pun yang mungkin ada.
Dengan langkah-langkah mudah ini, kini Anda dapat dengan mudah menemukan kolom di seluruh prosedur tersimpan Anda di server SQL. Kegunaan fitur tersebut tidak terbatas pada menemukan kolom, namun meluas ke teks apa pun yang ingin Anda temukan di seluruh prosedur tersimpan Anda.
