O nível de compatibilidade 110 do SQL Server 2014 usa o antigo Estimador de cardinalidade. Estou tentando aplicar o novo CE para uma declaração. Estou recebendo o erro "Sintaxe incorreta perto da palavra-chave 'opção'." Eu preciso fazer exclusões em lotes.
while
(
Select top (1) 1
from [AdventureWorks].dbo.DatabaseLog
option (querytraceon 2312) --error
) > 0
begin
delete top (10000 )
from [AdventureWorks].dbo.DatabaseLog
end
-- ele roda bem sozinho:
Select top (1) 1
from [AdventureWorks].[Person].[Person]
option (querytraceon 2312)
A cláusula de opção só pode ser usada em instruções independentes
SELECT
.Não onde o
SELECT
está sendo usado como uma expressão.Os exemplos a seguir também não permitem que você especifique uma dica de consulta.
Então você vai precisar
WHILE
(exigiria repetir a instrução ou envolvê-la em uma função não embutida)Para o exemplo específico em sua pergunta, você não precisa
SELECT
de nada.ou (pois isso acabará excluindo todas as linhas de qualquer maneira).
Você está fazendo errado... Segue abaixo a forma correta de fazer