Bitte sehen Sie diese Frage auf Stackoverflow:
Ich verwende einen EasySoft-ODBC-Treiber, um eine SQL Server 2008 R2 Express-Instanz mit Interbase zu verknüpfen, und habe Probleme, Metadaten vom Remoteserver abzurufen. Ausgehend von der Suche im Internet erwähnen alle Hauptvorschläge die Verwendung von OPENQUERY anstelle der vierteiligen Syntax für verknüpfte Server.
EG Mein aktueller (problematischer) Ansatz ist ...
CREATE VIEW [LIVE].[vwPRDETS] AS SELECT * FROM [LBLIVE]...[PRDETS] WITH (NOLOCK)
Aber bei einigen Tabellen erhalte ich den Fehler beim Aufruf der Ansicht ...
Meldung 7353, Ebene 16, Status 1, Zeile 1 Der OLE DB-Anbieter "MSDASQL" für den Verbindungsserver "LBLIVE" hat inkonsistente Metadaten bereitgestellt. Während der Ausführung wurde eine zusätzliche Spalte angegeben, die zum Zeitpunkt der Kompilierung nicht gefunden wurde.
Einige Ansichten kann ich auch nicht erstellen, da ich Folgendes erhalte ...
Meldung 7315, Ebene 16, Status 1, Zeile 1 Der OLE DB-Anbieter "MSDASQL" für den Verbindungsserver "LBLIVE" enthält mehrere Tabellen, die mit dem Namen "SYSDBA". "AUDIT_LBABKP" übereinstimmen.
Obwohl es nur eine der genannten Tabellen gibt.
Der alternative Ansatz zum Durchsuchen des Netzes scheint eher ...
SELECT * FROM OPENQUERY(<linked sevrer>, 'SELECT <column list> FROM MyTable')
Meine Frage ist also, ob SQL Server das an Interbase gesendete SQL optimieren kann, wenn ich OPENQUERY in meiner Ansichtsdefinition verwende. Oder gibt es wirklich keinen großen Unterschied zwischen den beiden Ansätzen?
Es ist ein Cross-Over-Thema und würde die POV einer DBA lieben.