SSDT 生成错误:预期 XML 但遇到 JSON

SSDT Error on build: Expected XML but encountered JSON instead

我正在使用最新版本的 Visual Studio Professional 2017 (v15.9.9) 和最新的 SQL Server Data Tools (v15.1.61903.01040)

我在我的数据库项目中新建了一个存储过程,例如,代码如下:

create proc [dbo].[MyProc] as
select 'Test' as [TestColumn] FOR JSON AUTO

编译不会出现以下错误,关键字JSON被高亮显示:

SQL46005: Expected XML but encountered JSON instead
SQL80001: Incorrect syntax near 'JSON'

这似乎很奇怪,当它完全有效时却无法编译SQL(或者我错了?我是否遗漏了什么?或者它真的不受支持吗?)

这个问题似乎 exist for older versions of SSDT before 2016,但当时报告已解决,这可能是最近的回归?我找不到此错误或类似错误的任何其他实例。

如果您将 .sqlproj 属性上的 "Target Platform" 设置为 SQL 2014 或更少或 "Microsoft Azure SQL Database" 那么这将会发生,兼容性级别不会影响它(或至少将我的项目设置为 2014 兼容性没有)。

这适用于 SQL 2016+ 和带有 SSDT“15.1.61902.21100”的 Azure v12

希望对您有所帮助!

编辑