Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Erro “Consulta não permitida no Waitfor” 101 no SQL Server


Se você estiver usando o WAITFOR instrução no SQL Server e você recebe o seguinte erro, provavelmente é porque você está fornecendo uma consulta como seu argumento.
Msg 101, Level 15, State 1, Line 1
Query not allowed in Waitfor.

O WAITFOR declaração não aceita consultas para seu período de "espera". Aceita apenas um horário específico ou um intervalo.

Na verdade, ele aceita RECEIVE instruções, mas isso é aplicável apenas a mensagens do Service Broker, portanto, se você não estiver usando mensagens do Service Broker, o erro acima é bastante autoexplicativo.

Exemplo


Aqui está um exemplo de tentativa incorreta de usar uma consulta no WAITFOR demonstração.
WAITFOR (SELECT Delay From DelayTable);

Resultado:
Msg 101, Level 15, State 1, Line 1
Query not allowed in Waitfor.

Para superar esse problema, você precisará fornecer um tempo real ou um atraso de tempo.

Por exemplo, isso funcionará.
WAITFOR DELAY '00:00:10';

Resultado:
Commands completed successfully.
Total execution time: 00:00:09.993

Nesse caso, usei um atraso de tempo, mas você também pode usar um tempo específico.
WAITFOR TIME '10:55:40';