2013-01-10 57 views
12

Đối với quy trình được lưu trữ, tôi có mã nguồn đầy đủ. Nhưng tên của thủ tục đã lưu trữ đó đã bị mất. Trong cơ sở dữ liệu này, có hàng trăm thủ tục được lưu trữ.Tìm tên thủ tục được lưu trữ với nội dung trong SQL Server 2000

Vì vậy, có cách nào để tôi có thể tìm ra các tên của thủ tục được lưu trữ bằng cách sử dụng nội dung của nó hoặc bằng cách sử dụng bất kỳ biến nào trong nội dung?

Điều này khiến tôi khó hiểu. Một sự giúp đỡ sẽ được đánh giá cao.

Trả lời

26

Hãy thử điều này:

select * from sysobjects where id in 
(select id from syscomments where text like '%exec%') 
order by [name] 

nơi 'exec' là nội dung bạn đang tìm kiếm. Truy vấn này sẽ tìm kiếm quan điểm cũng có, chỉ FYI

+0

@Melannie - Bingo! Nó đã làm việc. Cảm ơn một người bạn. – Kings

0

Hãy thử truy vấn này nó sẽ nhận được Tên thủ tục có chứa các chữ Do hoặc Dòng

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

sys.procedures không tồn tại trên SQL 2000 – BStateham

+1

Đúng. Đã đề cập Prob là cho SQL 2000 !! – Kings

6

Nếu các văn bản của các thủ tục lưu trữ không được mã hóa, Sql Server giữ toàn văn của quy trình trong bảng syscomments có trường id đang tham chiếu đến bảng sysobjects, nơi tên thực được lưu trữ.

Vì vậy, tìm thấy một số dòng đại diện từ các thủ tục lưu trữ, có nghĩa là không được ở một nơi khác, và làm:

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 

này hy vọng sẽ trở lại chỉ là một vài thủ tục mà bạn có thể kiểm tra bằng tay.

+0

điều này cũng tốt. Nhưng không thể chọn nhiều hơn một 'Trả lời'. Thnaks:) – Kings

+0

np, vui vì chúng tôi có thể giúp. – SWeko

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

Có cách tiếp cận khác, dễ đọc hơn và dễ nhớ:

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

này hoạt động ít nhất là trong sql 2008 và các phiên bản mới hơn. Fuente

Các vấn đề liên quan