Saya ingin mencari teks dari semua prosedur tersimpan di basis data saya. Saya menggunakan SQL di bawah ini:
SELECT DISTINCT
o.name AS Object_Name,
o.type_desc
FROM sys.sql_modules m
INNER JOIN
sys.objects o
ON m.object_id = o.object_id
WHERE m.definition Like '%[ABD]%';
Saya ingin mencari [ABD]
di semua prosedur tersimpan termasuk tanda kurung, tetapi tidak memberikan hasil yang tepat. Bagaimana saya bisa mengubah permintaan saya untuk mencapai ini?
sql
sql-server
stored-procedures
DharaPPatel
sumber
sumber
SCHEMA_NAME(o.schema_id) AS Schema_Name
ke klausa pilih.Coba permintaan ini:
Pertanyaan
sumber
Sudahkah Anda mencoba menggunakan beberapa alat pihak ketiga untuk melakukan pencarian? Ada beberapa tersedia di luar sana yang gratis dan yang menyelamatkan saya banyak waktu di masa lalu.
Di bawah ini adalah dua Addins SSMS yang saya gunakan dengan kesuksesan baik.
Pencarian ApexSQL - Mencari skema dan data dalam database dan memiliki fitur tambahan seperti pelacakan ketergantungan dan banyak lagi ...
Paket Alat SSMS - Memiliki fungsi pencarian yang sama dengan yang sebelumnya dan beberapa fitur keren lainnya. Tidak gratis untuk SQL Server 2012 tetapi masih sangat terjangkau.
Saya tahu jawaban ini tidak 100% terkait dengan pertanyaan (yang lebih spesifik) tetapi mudah-mudahan orang lain akan menemukan ini berguna.
sumber
Saya biasanya menjalankan yang berikut untuk mencapai itu:
sumber
Praktik yang baik untuk bekerja dengan SQL Server.
Buat prosedur tersimpan di bawah ini dan atur kunci pendek,
Sekarang - Atur kunci pendek seperti di bawah ini,
Jadi lain kali setiap kali Anda ingin mencari teks tertentu dalam salah satu dari empat objek seperti
Store procedure
,Views
,Functions
danTables
. Anda hanya perlu menulis kata kunci itu dan tekan tombol pintas.Misalnya: Saya ingin mencari 'PaymentTable' lalu menulis 'PaymentTable' dan pastikan Anda memilih atau menyorot kata kunci tertulis di editor kueri dan tekan tombol pintas
ctrl+4
- ini akan memberi Anda hasil lengkap.sumber
Procedure or function 'Searchinall' expects parameter '@strFind', which was not supplied
Ada ide?Redgate's SQL Search adalah alat yang hebat untuk melakukan ini, ini adalah plugin gratis untuk SSMS.
sumber
Tolong anggap ini sebagai alternatif "kotor" tetapi ini menyelamatkan saya berkali-kali terutama ketika saya tidak terbiasa dengan proyek DB. Kadang-kadang Anda mencoba mencari string di dalam semua SP dan lupa bahwa beberapa logika terkait mungkin bersembunyi di antara Fungsi dan Pemicu atau itu bisa saja diucapkan secara berbeda dari yang Anda pikirkan.
Dari MSSMS Anda, Anda dapat mengklik kanan DB dan pilih
Tasks -> Generate Scripts
wizard untuk mengeluarkan semua SP, Fns, dan Pemicu ke dalam satu file .sql.Pastikan untuk memilih Pemicu juga!
Kemudian gunakan Sublime atau Notepad untuk mencari string yang perlu Anda temukan. Saya tahu ini mungkin pendekatan yang cukup tidak efisien dan paranoid tetapi berhasil :)
sumber
Anda juga dapat menggunakan ini:
sumber
INFORMATION_SCHEMA.ROUTINES.ROUTINE_DEFINITION
hanya memegang 4000 karakter pertama dari rutin.Mungkin membantu Anda!
sumber
sumber
sumber
Anda juga dapat menggunakan:
Itu termasuk komentar
sumber
OBJECT_NAME ([id]) -> Nama Objek (Lihat, Prosedur Penyimpanan, Fungsi Skalar, nama fungsi Tabel)
id (int) = Nomor identifikasi objek
xtype char (2) Jenis objek. Dapat berupa salah satu dari jenis objek berikut:
FN = Fungsi skalar
P = Prosedur tersimpan
V = Lihat
TF = Fungsi tabel
sumber
Saya membuat prosedur untuk mencari teks dalam prosedur / fungsi, tabel, tampilan, atau pekerjaan. Parameter pertama @search adalah kriteria pencarian, @target target pencarian, yaitu, prosedur, tabel, dll. Jika tidak ditentukan, cari semua. @db adalah untuk menentukan basis data yang akan dicari, default ke basis data Anda saat ini. Inilah pertanyaan saya dalam SQL dinamis.
sumber
Menggunakan CHARINDEX :
Menggunakan PATINDEX :
Menggunakan ganda
[[]ABD]
ini mirip dengan melarikan diri:sumber
coba ini juga:
sumber
sumber
Kueri ini adalah teks pencarian dalam prosedur tersimpan dari semua database.
sumber
sumber
Sering kali saya menggunakan skrip ini untuk mencari tahu procs mana yang harus diubah, atau untuk mencari tahu apa yang menggunakan kolom tabel, atau tabel itu sama sekali untuk menghapus beberapa sampah lama. Itu memeriksa setiap database pada contoh itu dijalankan oleh sp_msforeachdb luar biasa disediakan.
sumber
sumber
Anda juga bisa menggunakan
dan kemudian jalankan
sumber