在Azure SQL DB中无法识别OPENJSON

时间:2019-02-26 09:17:33

标签: json sql-server azure-sql-database

我想在Azure SQL DB中使用OPENJSON函数,但是当我尝试执行该函数时,出现以下错误:

  

无法识别消息195,级别15,状态10,第25行“ OPENJSON”   内置函数名称。

我研究发现link这句话是

  

OPENJSON函数仅在兼容级别130或更高版本下可用。如果您的数据库兼容性级别低于130,则SQL Server无法找到并运行OPENJSON函数。所有兼容级别的其他JSON函数都可用。

根据建议,使用以下内容检查兼容性级别

select * from sys.databases

,确认为140,高于最低要求。

那么,行不通吗?

3 个答案:

答案 0 :(得分:0)

理想情况下,如果兼容级别为130或更高,它应该可以工作。

https://blogs.msdn.microsoft.com/azuresqldbsupport/2018/03/24/lesson-learned-34-does-azure-sql-database-support-openjson/

答案 1 :(得分:0)

三个步骤可能会为您提供帮助:

1。检查您的SQL Server版本(从2016开始)。

2。检查Azure SQL数据库的不兼容性级别为130或更高。

3。检查您的Azure SQL数据库版本。 运行select @@version以查看它是否是V12服务器。

如果看到较低的版本(例如11.xxx),则可能是在不支持JSON的旧体系结构上建立了数据库。您需要将Azure SQL数据库更新到最新的V12版本。

参考:OPENJSON does not work in SQL Server?

希望这会有所帮助。

答案 2 :(得分:0)

OPENJSON是一个表值函数,它必须出现在表表达式的有效位置。

EG

select openjson('{}')

失败

  

无法识别消息195,级别15,状态10,第29行“ openjson”   内置函数名称。

但是

select * from openjson('{}')

有效。