2013-01-10 26 views
12

içeriğindeki bir saklı yordam ismini bulun Saklı bir yordam için tam kaynak kodum var. Ancak bu saklı yordamın adı kayboldu. Bu veritabanında yüzlerce saklı prosedür var.İçindeki SQL Server 2000

Bu nedenle, saklı yordamının içeriğini ya da içeriğindeki değişkenlerden herhangi birini kullanarak adını bulabileceğim bir yol var mı?

Bu beni çok şaşırtıyor. Bir yardım sincerley takdir olurdu.

cevap

26

deneyin:

'exec' aradığınız metindir
select * from sysobjects where id in 
(select id from syscomments where text like '%exec%') 
order by [name] 

. Bu sorgu sadece Bilginize

+0

@Melannie - Bingo! İşe yaradı. Teşekkürler ton arkadaş. – Kings

0

, ayrıca görüşlerini aramak o Verilen kelime veya Field

SELECT Name 
     FROM sys.procedures 
     WHERE OBJECT_DEFINITION(object_id) LIKE '%Any-Field (OR) WORD%' 
+3

sys.procedures, SQL 2000 – BStateham

+1

True'de yok. Sözde Prob SQL 2000 için! – Kings

6

saklanan prosedürleri metinleri şifreli değilse içeren Prosedür Adı olsun, SQL Server tutan bu Sorgu deneyin olacak syscomments tablosundaki yordamın tam metni, gerçek adın saklandığı sysobjects tablosuna başvuran id alanıyla.

Yani, bu başka bir yerde olması pek mümkün değildir, saklı yordam bazı temsilci satırı bulun ve yapın:

select o.name, c.text 
from syscomments c 
    inner join sysobjects o on o.id = c.id 
where c.text like '%<representative_line>%' 
    and o.type='P' -- this means filter procedures only 

Bu umutla elle kontrol edebilirsiniz sadece birkaç prosedürleri dönmelidir.

+0

bu da iyidir. Ancak birden fazla 'Cevap' seçemezsiniz. Thnaks:) – Kings

+0

np, yardımcı olabileceğimize sevindik. – SWeko

0
select object_name(id) from syscomments where text like '%exec%' 
2

daha okunabilir ve unutulmaz bir başka yaklaşım vardır:

SELECT ROUTINE_NAME, ROUTINE_DEFINITION 
    FROM INFORMATION_SCHEMA.ROUTINES 
    WHERE ROUTINE_DEFINITION LIKE '%AlgunaPalabraQueTeAcuerdes%' 
    AND ROUTINE_TYPE='PROCEDURE' 

Bu, en az sql 2008 ve daha yeni sürümlerde çalışır. Fuente