SQL Server Management Studio 不执行包含 NOT IN 子句的查询

SQL Server Management Studio does not execute queries containing a NOT IN clause

我的一个朋友在空闲时间使用SQL服务器数据库进行一些编程。当他想在 SQL Server Management Studio 中执行任何包含 NOT IN 子句的查询时,会出现此错误:

Msg 102 Level 15 State 1 Line 1
Incorrect syntax near ';'

众所周知,当您提供了错误的查询,但查询是正确的时,就会发生这种错误。仅当查询包含 NOT IN 子句时才会出现此问题。请查看此 fiddle 示例:db<>fiddle

在fiddle和我自己的数据库中,所有这些查询都将成功执行,但在我朋友的SSMS中,最后一个查询失败(所有其他人都成功!)并出现上述错误消息向上。似乎 SSMS 删除了最后一个括号或做了类似奇怪的事情。我知道示例查询没有多大意义,只是为了说明问题。

我们尝试了以下方法来了解发生了什么:

  1. 创建了他的数据库的备份并将其导入我的系统 -> 查询成功执行
  2. 检查受影响的列或 table 上是否存在任何 triggers/indexes 或类似内容 -> 情况并非如此
  3. 按 Ctrl + L 执行查询的执行计划 -> 出现相同的错误消息
  4. 在他使用数据库的 C# 应用程序中执行查询 -> 查询成功执行
  5. 在他的系统上删除并重新安装 SSMS 并再次导入数据库备份 -> 行为仍然相同

我已经使用 SQL 和 SQL Server Management Studio 工作多年,但我从未见过如此奇怪的行为,我们找不到任何提示在网上。

我们都确保我们使用的是最新版本的 SSMS,我们看不出他和我的设置之间有任何差异可以解释这个问题。他的 SSMS 上似乎有任何隐藏设置,通常会阻止执行此类查询,甚至在删除并重新安装后仍然存在。非常欢迎任何帮助。

非常感谢所有看过并试图找出此问题原因的人。由于这些很好的想法还是无法解决问题,我们再次卸载了SSMS,然后使用CCleaner清理了注册表和可能的卸载程序遗留问题。然后我们重新安装了 SQL Server Management Studio,再次导入了数据库备份,现在它可以正常工作了。抱歉,我不能告诉你到底是什么问题,似乎注册表或任何配置文件中有关 SSMS 的条目不正确。