Dipecahkan: mencari teks di semua prosedur tersimpan server sql

Pembaharuan Terakhir: 09/13/2023

Memahami persyaratan prosedur Tersimpan SQL Server, kita sering kali merasa perlu mencari teks tertentu di semua prosedur tersebut. Baik itu untuk debugging, mengidentifikasi dependensi, atau sekadar memeriksa penggunaan tabel, kolom, atau elemen SQL tertentu lainnya. Namun, tugas ini bisa sangat membosankan jika dilakukan secara manual. Dalam artikel ini, kita akan membahas cara melakukannya dengan cara yang lebih efisien, dengan membuat skrip jalan keluarnya.

Penyederhanaan Tugas dengan Skrip SQL

Memanfaatkan kekuatan skrip SQL kita dapat mengubah tugas yang melelahkan ini menjadi proses yang cepat dan sederhana. Daripada memeriksa setiap prosedur tersimpan secara individual, kita dapat langsung menanyakan tampilan sistem database untuk mencari string tertentu di dalamnya. Solusi ini sangat serbaguna karena kompatibel dengan sebagian besar versi SQL Server.

Prinsip prosedur ini sangat mudah – semuanya tentang mengambil data dari tampilan sql_modules dengan pernyataan pilih yang sederhana. Tampilan sistem sys.sql_modules berisi baris untuk setiap objek yang memiliki modul SQL terkait. Modul SQL pada dasarnya adalah setiap rutinitas atau objek yang dibuat dari pernyataan SQL Server Data Manipulation Language (DML)- (misalnya, prosedur tersimpan, tampilan, fungsi).

Skrip SQL untuk melakukan operasi ini adalah:

SELECT OBJECT_NAME(sm.object_id) AS object_name, 
       OBJECT_DEFINITION(sm.object_id) AS definition
FROM sys.sql_modules AS sm
WHERE sm.definition LIKE '%your_text%'

Menyelami Kode SQL

Dalam kode SQL yang diberikan, Anda perlu mengganti 'teks_Anda' dengan string yang Anda cari. Kueri akan mengembalikan daftar nama objek (Prosedur Tersimpan, Fungsi, Tampilan, dll.) dan definisi terkait yang menyertakan teks pencarian yang ditentukan. Dengan cara ini Anda dapat dengan mudah mengidentifikasi semua contoh teks spesifik yang Anda cari.

Memahami Kode:

  • OBJECT_NAME(sm.object_id) adalah nama objek yang berisi teks tertentu.
  • OBJECT_DEFINITION(sm.object_id) adalah definisi objek, yaitu skrip SQL objek.

Harap pastikan bahwa jika teks yang Anda cari adalah bagian dari kata kunci SQL, kueri ini juga akan mengembalikan objek yang menggunakan kata kunci tersebut. Oleh karena itu disarankan untuk mencari kata kunci yang berbeda.

Pertimbangan tambahan

Meskipun solusi ini mempercepat proses secara signifikan, ada beberapa pertimbangan yang perlu diingat. Kolom definisi di sys.sql_modules memiliki ukuran maksimal 4000 karakter. Jika Anda memiliki prosedur tersimpan yang lebih lama dari itu, teks akan terpotong. Hal ini berpotensi menyebabkan beberapa kemunculan teks pencarian hilang. Solusinya, bagaimanapun, dikontrol dengan mengatur opsi 'TEXTSIZE' ke nilai maksimum 2147483647.

Ini mungkin bukan penggunaan skrip SQL yang paling konvensional, tetapi ini jelas membuktikan keserbagunaan dan penyederhanaan yang dibawanya ke dalam tugas sehari-hari para profesional basis data. Ini adalah contoh utama bagaimana pemahaman dan efisiensi penggunaan alat yang ada dapat meningkat secara signifikan SEO dan produktivitas.

Pos terkait: