sysmessages 表问题

Bru*_*eur 4 sql-server sql-server-2016

我在我们的一个数据库中遇到了一个名为 SysMessages 的表的烦人问题。当我运行一个 select 语句时,我没有得到这个表的内容,而是主数据库中 sys.sysmessages 视图的内容。Ause [DBNAME]没有帮助,也没有select * from [DBNAME].dbo.SysMessages

我正在迁移到更新的 SQL Server 版本。在 SQL Server 2008 R2 中,我没有遇到此数据库的问题,但在 SQL Server 2016 中,我无法查询自己的 SysMessages 表。

任何帮助将不胜感激。

Low*_*n M 6

这是SQL Server 2012+系统兼容性视图的预期行为:

在用户数据库中引用时,在 SQL Server 2000 中宣布不推荐使用的系统表(例如 syslanguages 或 syscacheobjects)现在绑定到 sys 架构中的向后兼容性视图。由于 SQL Server 2000 系统表已被多个版本弃用,因此此更改不被视为重大更改。

示例:如果用户在用户数据库中创建名为 syslanguages 的用户表,则在 SQL Server 2008 中,语句 SELECT * from dbo.syslanguages; 在该数据库中将返回用户表中的值。从 SQL Server 2012 开始,这种做法将从系统视图 sys.syslanguages 返回数据。

您可能将不得不修复您的数据库以不使用与已弃用的系统表(现在sys架构中的系统视图)相同的名称。