2016-03-28 99 views
0

为什么下面的查询适用于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中

+0

为什么你有'。'在那里?来自sysobjects的SELECT sysobjects。*可以在两者中使用。尝试使用INFORMATION_SCHEMA视图来访问系统对象。 – JimmyV

+0

@JimmyV,我不关心访问表。它只是为了证明这个问题。你可以用任何表格来做到这一点,你可以看到相同的行为。 – JMS10

+0

我试图重现,但我的兼容级别只能回到SQL Server 2005.我不明白你发布的查询将如何运作。这是什么意思?当然,如果你从中间去掉了这个点,它会很有意义。为什么你会在遗留代码中加入一个没有意义的点? –

回答

0

它不适合我在SQL Server 2008 R2运行。我得到了你说你在2014年得到的同样的错误。我不明白这可以为你工作。

Noel

+0

数据库的兼容级别设置为SQL Server 2000,这也许可能是为什么它不能为你运行。我会更新我的帖子来提到这一点。 – JMS10

相关问题