2011-07-01 25 views
8

Tôi cho rằng những gì tôi định yêu cầu thường nằm trong lĩnh vực "thực hành xấu" nhưng tôi muốn hỏi bất kể vì chức năng này hữu ích cho việc chẩn đoán các vấn đề và đánh dấu các tập lệnh chạy dài.Có cách nào để tạm dừng hoặc chờ một vài phút từ bên trong tập lệnh không?

Tóm lại, có một hàm được tích hợp vào SQL Server mà tôi có thể gọi cho phép tôi 'tạm dừng' trong một khoảng thời gian ngắn không?

Tôi có quy trình SSIS hàng đêm sau khi xuất dữ liệu sẽ tạo ra nhiều tập hợp dữ liệu thống kê khác nhau. Bất cứ khi nào tôi gặp sự cố với thời gian thực thi gói SSIS, tôi có một loạt các thủ tục được lưu trữ chẩn đoán mà tôi có thể gọi đó là chẩn đoán giúp xuất/chèn hàng loạt thực hiện quá lâu để thực thi. Trong nửa sau của quá trình SSIS, nơi tôi tạo ra dữ liệu thống kê, tôi có thể phân tích nơi quy trình có thể bị bóc lột hoặc phân tích tốc độ dữ liệu trong bảng dữ liệu của tôi nhanh như thế nào. Hầu hết các thủ tục statical bắt đầu bằng cách chèn dữ liệu vào một bảng được đạp qua qua các vòng lặp WHILE và cập nhật khi các điều kiện cần thiết được đáp ứng.

Tôi có thể dễ dàng truy vấn dữ liệu của mình để nắm bắt số liệu cụ thể trong khi quy trình được lưu trữ thống kê của tôi đang thực thi. Những gì tôi muốn làm là lấy số liệu đó, đợi chính xác 1 giây (hoặc một khoảng thời gian cụ thể) và lấy lại số liệu để tôi có thể so sánh chúng.

Bằng cách có thể thực hiện 'tạm dừng', tôi có thể tạo các tập lệnh chẩn đoán mạnh mẽ hơn để đặt số lượng chèn, cập nhật hoặc tính toán mỗi giây và do đó có thể ước tính phần nào của các quy trình lớn hơn của tôi .

Tôi giả định rằng có thể có một số công cụ chẩn đoán mà tôi có thể sử dụng từ bên trong SQL Server Management Studio. Tôi thừa nhận, tôi đã không tinkered với bất kỳ điều đó. Tuy nhiên, thông thường nếu có một công cụ trong SSMS, nhiều chức năng back-end có thể được bắt chước bởi một số dạng kịch bản lạ mắt. Một hạn chế có thể khác khi sử dụng bất kỳ chẩn đoán tích hợp nào là tôi muốn chạy các chỉ số này trong khi gói SSIS đang chạy không chỉ trong khi tôi đang kiểm tra các thủ tục được lưu trữ thực thi trong gói.

Cảm ơn mọi người về mọi giải pháp hoặc mẹo! Yêu cầu này không cần thiết 100% nhưng các gói SSIS hàng đêm của tôi đang trở nên lớn và tôi phải bắt đầu tinh chỉnh "bánh xe bí ẩn" mà tôi đã có thể bỏ qua trong quá khứ.

+2

gì về việc thực hiện một cách tiếp cận bảng ghi nhật ký, nơi làm thủ tục chạy dài bạn chèn timestamps và thông tin trạng thái vào một bảng riêng biệt trong quá trình thực? Một dấu vết có cấu trúc tốt theo cách đó sẽ cho bạn khả năng xác định các số liệu mà bạn quan tâm, phải không? –

Trả lời

8

Bạn muốn sử dụng câu lệnh WAITFOR DELAY

+0

Đó là những gì tôi đang tìm kiếm. Tôi đã cố gắng google cho loại điều này (trung thực!) Nhưng tôi không thể tìm thấy nó. Cảm ơn bạn. – RLH

7

Chọn getdate() - chờ 10 giây để chạy lệnh khác

WAITFOR TRÌ HOÃN '00: 00: 10 '; --accept hh giá trị: mm: ss

Chọn getdate()

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