0

我正在尝试OPENJSON在 SQL Server 2016 上运行的数据库中使用,并在运行这个简单的测试查询时出现以下错误(在不同的 2016 数据库上运行良好)

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

Invalid object name 'OPENJSON'.

我知道兼容性级别设置,但在此数据库上似乎并非如此。它的兼容级别已经设置为 130。这个特定的数据库是从旧的 2008R2 数据库迁移而来的。我们还需要做些什么来访问该OPENJSON功能吗?

编辑

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

如果这很重要,我将作为SA帐户连接。

4

1 回答 1

1

数据库报告的兼容性级别是 130 来自 SSMS gui 和运行SELECT compatibility_level FROM sys.databases WHERE name = 'MyDB';

除了测试之外,没有其他原因,我跑了ALTER DATABASE MyDB SET COMPATIBILITY_LEVEL = 130,现在一切正常。我不知道是什么原因造成的。

编辑

我想我现在知道是什么导致了这种奇怪的行为。表现出这种行为的数据库是一个开发数据库,​​它是每天早上通过从 prod 数据库复制创建的。经过更多研究,prod 数据库没有设置为兼容级别 130,而是 100。我在想,当复制发生并从 prod 日志文件恢复 dev 数据库时,即使 dev db 设置为 130,有些东西两者之间不匹配。从那以后,我也将 prod 提高到了 130,并且一切都应该很好。

于 2019-07-19T13:18:48.607 回答