Silakan lihat pertanyaan ini di stackoverflow:
Saya menggunakan driver EasySoft ODBC untuk menautkan contoh SQL Server 2008 R2 Express ke Interbase dan saya mengalami beberapa kesulitan dengan mendapatkan metadata dari server jauh. Dari mencari di internet sugestions utama semua menyebutkan menggunakan OPENQUERY bukan sintaks server empat bagian yang terhubung.
EG Pendekatan saya saat ini (bermasalah) adalah ...
CREATE VIEW [LIVE].[vwPRDETS] AS SELECT * FROM [LBLIVE]...[PRDETS] WITH (NOLOCK)
Tetapi pada beberapa tabel saya mendapatkan kesalahan saat memanggil tampilan ...
Msg 7353, Level 16, State 1, Line 1 Penyedia OLE DB "MSDASQL" untuk server tertaut "LBLIVE" menyediakan metadata yang tidak konsisten. Kolom tambahan disediakan selama eksekusi yang tidak ditemukan pada waktu kompilasi.
Juga, beberapa tampilan yang bahkan tidak dapat saya buat karena saya mendapatkan yang berikut ...
Msg 7315, Level 16, State 1, Line 1 Penyedia OLE DB "MSDASQL" untuk server tertaut "LBLIVE" berisi beberapa tabel yang cocok dengan nama "" SYSDBA "." AUDIT_LBABKP "".
Meskipun hanya ada satu tabel yang disebutkan.
Pendekatan alternatif dari pencarian di internet tampaknya lebih seperti ...
SELECT * FROM OPENQUERY(<linked sevrer>, 'SELECT <column list> FROM MyTable')
Jadi, pertanyaan saya adalah, jika saya menggunakan OPENQUERY dalam definisi saya, apakah SQL Server dapat mengoptimalkan SQL yang dihasilkan yang dikirim ke Interbase? Atau apakah benar-benar tidak banyak perbedaan antara kedua pendekatan tersebut?
Ini adalah subjek lintas dan akan menyukai POV dba.