2012-04-12 25 views
19

Hãy xem xét các thủ tục lưu trữ sau ..Làm cách nào để xem tiến trình chạy các thủ tục lưu sẵn SQL?

CREATE PROCEDURE SlowCleanUp (@MaxDate DATETIME) 
AS 
BEGIN 
    PRINT 'Deleting old data Part 1/3...' 
    DELETE FROM HugeTable1 where SaveDate < @MaxDate 

    PRINT 'Deleting old data Part 2/3...' 
    DELETE FROM HugeTable2 where SaveDate < @MaxDate 

    PRINT 'Deleting old data Part 3/3...' 
    DELETE FROM HugeTable3 where SaveDate < @MaxDate 

    PRINT 'Deleting old data COMPLETED.' 
END 

Hãy nói rằng mỗi câu lệnh xóa mất một thời gian dài để xóa, nhưng tôi muốn nhìn thấy sự tiến bộ của thủ tục lưu trữ này khi tôi đang chạy nó trong SQL Management Studio . Nói cách khác, tôi muốn xem đầu ra của các câu lệnh PRINT để xem tôi đang ở bất kỳ thời điểm nào. Tuy nhiên, có vẻ như tôi chỉ có thể nhìn thấy các đầu ra PRINT khi kết thúc chạy ENTIRE. Có cách nào để làm cho nó để tôi có thể nhìn thấy đầu ra PRINT tại thời gian thực? Nếu không, có cách nào khác tôi có thể thấy tiến trình của một thủ tục lưu trữ đang chạy không?

Trả lời

31

Nếu bạn sử dụng RAISERROR với một mức độ nghiêm trọng của 10 hoặc ít hơn, và sử dụng tùy chọn NOWAIT, nó sẽ gửi một thông báo cung cấp thông tin cho khách hàng ngay lập tức:

RAISERROR ('Deleting old data Part 1/3' , 0, 1) WITH NOWAIT

+0

Cảm ơn, đó chỉ là những gì tôi cần! :) –

6

Có bạn sẽ có thể để có được nhắn để in ngay lập tức nếu bạn sử dụng RAISERROR:

RAISERROR('Hello',10,1) WITH NOWAIT

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