OPENJSON在兼容级别设置为130的SQL Server 2016上不可用

时间:2019-07-19 13:07:07

标签: tsql sql-server-2016 open-json

我正在尝试在SQL Server 2016上运行的数据库中使用OPENJSON,并且在运行此简单的测试查询(在其他2016数据库上正常运行)时出现以下错误

select * from OPENJSON('{ "test": "test" }')

Invalid object name 'OPENJSON'.

我了解兼容性级别设置,但是在该数据库上似乎并非如此。它的兼容性级别已经设置为130。该特定数据库是从旧的2008R2数据库迁移而来的。要访问OPENJSON函数,我们还需要做其他事情吗?

编辑

作为测试,我在同一数据库服务器上创建了一个新的空数据库,上面的查询工作正常。因此,数据库服务器似乎不是问题,这与我们迁移的一个数据库有关。

如果有关系,我将以SA帐户身份连接。

1 个答案:

答案 0 :(得分:0)

通过SSMS gui并运行insertText

,数据库的报告兼容性级别为130。

除了测试外,没有其他原因,我运行了SELECT compatibility_level FROM sys.databases WHERE name = 'MyDB';,现在一切正常。我不知道会导致什么。

编辑

我想我知道是什么导致了奇怪的行为。表现出这种行为的数据库是一个dev数据库,它每天早晨通过prod数据库中的复制创建。经过更多研究后,prod数据库的兼容性级别不是设置为130,而是设置为100。我认为,即使将dev db设置为130,当复制发生并从prod日志文件恢复了dev DB时,两者之间不匹配。从那以后,我的产品产量也增加到了130个,今后一切都会很好。