爲什麼下面的查詢適用於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.我不明白你發佈的查詢將如何運作。這是什麼意思?當然,如果你從中間去掉了這個點,它會很有意義。爲什麼你會在遺留代碼中加入一個沒有意義的點? –