2016-03-28 13 views
0

Warum funktioniert die folgende Abfrage in SQL Server 2008, aber nicht in SQL Server 2014?Abfrage funktioniert auf SQL Server 2008, aber nicht in 2014

SELECT sysobj.ects.* FROM sysobjects 

Beachten Sie, wie der Name der Tabelle den Punkt zwischen sysobj und ects in der SELECT Aussage, aber die FROM Aussage nicht über den Punkt. Dies geschieht mit jeder Tabelle. Sie können den Punkt an einer beliebigen Stelle in den Tabellennamen einfügen, und die Abfrage wird weiterhin ausgeführt.

auf 2.014 Sie diesen Fehler sehen:

The column prefix 'sysobj.ects' does not match with a table name or alias name used in the query.

EDIT: Kompatibilitätsmodus auf dem 2008-Server 2000 auf SQL Server gesetzt

+0

Warum haben Sie ein '.' da drin? SELECT sysobjects. * Aus sysobjects funktioniert in beiden. Versuchen Sie, die INFORMATION_SCHEMA-Ansichten zu verwenden, um auf Systemobjekte zuzugreifen. – JimmyV

+0

@JimmyV, ich bin nicht besorgt über den Zugriff auf die Tabellen. Es nur um das Problem zu demonstrieren. Sie können dies mit jeder Tabelle tun, und Sie können das gleiche Verhalten sehen. – JMS10

+0

Ich habe versucht, zu reproduzieren, aber mein Kompatibilitätsgrad geht nur auf SQL Server 2005 zurück. Ich verstehe nicht, wie die von Ihnen gepostete Abfrage jemals funktionieren würde. Was soll es tun? Natürlich, wenn Sie den Punkt aus der Mitte entfernt haben, wäre es vollkommen sinnvoll. Warum hätten Sie Legacy-Code mit einem bedeutungslosen Punkt in der Mitte? –

Antwort

0

Es ist nicht für mich in SQL Server 2008 R2 läuft . Ich bekomme den gleichen Fehler, den Sie 2014 bekommen. Ich sehe nicht, wie das für Sie funktionieren kann.

Noel

+0

Die Kompatibilitätsgrad für die Datenbank ist auf SQL Server 2000 festgelegt, so dass es möglicherweise nicht für Sie ausgeführt wird. Ich werde meinen Beitrag aktualisieren, um das zu erwähnen. – JMS10

Verwandte Themen