Nếu bạn đang sử dụng WAITFOR
trong SQL Server và bạn gặp lỗi sau, có thể là do bạn đang cung cấp một truy vấn làm đối số của nó.
Msg 101, Level 15, State 1, Line 1
Query not allowed in Waitfor.
WAITFOR
tuyên bố không chấp nhận các truy vấn cho khoảng thời gian "chờ đợi" của nó. Nó chỉ chấp nhận một thời gian hoặc một khoảng thời gian cụ thể.
Trên thực tế, nó chấp nhận RECEIVE
nhưng điều này chỉ áp dụng cho các thông báo của Nhà môi giới dịch vụ, vì vậy nếu bạn không sử dụng các thông báo của Nhà môi giới dịch vụ, thì lỗi trên khá dễ hiểu.
Ví dụ
Dưới đây là một ví dụ về việc cố gắng sử dụng một truy vấn không chính xác trong WAITFOR
tuyên bố.
WAITFOR (SELECT Delay From DelayTable);
Kết quả:
Msg 101, Level 15, State 1, Line 1 Query not allowed in Waitfor.
Để khắc phục sự cố này, bạn cần cung cấp thời gian thực tế hoặc thời gian trễ.
Ví dụ:điều này sẽ hoạt động.
WAITFOR DELAY '00:00:10';
Kết quả:
Commands completed successfully. Total execution time: 00:00:09.993
Trong trường hợp này, tôi đã sử dụng thời gian trễ, nhưng bạn cũng có thể sử dụng một thời gian cụ thể.
WAITFOR TIME '10:55:40';