为什么下面的查询适用于SQL Server 2008,但不适用于SQL Server 2014?查询适用于SQL Server 2008,但不适用于2014
SELECT sysobj.ects.* FROM sysobjects
通知表名有着怎样的SELECT
声明的sysobj和学分之间的点,但FROM
声明没有点。这发生在任何表格中。你可以把点放在表名的任何地方,它仍然会运行查询罚款。
2014年,你会看到这样的错误:
The column prefix 'sysobj.ects' does not match with a table name or alias name used in the query.
编辑:2008年的服务器上的兼容性模式设置为SQL Server 2000中
为什么你有'。'在那里?来自sysobjects的SELECT sysobjects。*可以在两者中使用。尝试使用INFORMATION_SCHEMA视图来访问系统对象。 – JimmyV
@JimmyV,我不关心访问表。它只是为了证明这个问题。你可以用任何表格来做到这一点,你可以看到相同的行为。 – JMS10
我试图重现,但我的兼容级别只能回到SQL Server 2005.我不明白你发布的查询将如何运作。这是什么意思?当然,如果你从中间去掉了这个点,它会很有意义。为什么你会在遗留代码中加入一个没有意义的点? –