SQL Server 2014 兼容级别 110 使用旧的基数估计器。我正在尝试为声明执行新的 CE。我收到错误消息“关键字‘选项’附近的语法不正确。” 我需要批量删除。
while
(
Select top (1) 1
from [AdventureWorks].dbo.DatabaseLog
option (querytraceon 2312) --error
) > 0
begin
delete top (10000 )
from [AdventureWorks].dbo.DatabaseLog
end
-- 它自己运行正常:
Select top (1) 1
from [AdventureWorks].[Person].[Person]
option (querytraceon 2312)
选项子句只能用于独立
SELECT
语句。不是
SELECT
用作表达式的地方。以下示例也不允许您指定查询提示。
所以你要么需要
WHILE
(需要重复该语句或将其包装在非内联函数中)对于您问题中的具体示例,您根本不需要
SELECT
。或者(因为这最终会删除所有行)。
你做错了......下面是正确的做法