Aktualnie korzystam z oprogramowania innej firmy, które używa SQL Server jako swojej bazy danych. Mam drugą instancję programu SQL Server działającą w innej lokalizacji, a niektóre aplikacje, które buduję w tej instancji SQL Server, muszą uzyskać dostęp do niektórych danych w oprogramowaniu innej firmy. Stworzyłem więc połączenie ODBC między polami i skonfigurowałem zewnętrzny serwer SQL jako serwer połączony w mojej wersji SQL Server. Jako test, wpadłem coś podobnego następującym stwierdzeniem z mojego serwera SQL, dostęp do jednego z tabelami innej firmy:Powiązana baza danych SQL Server z błędem "niespójne metadane"
SELECT * FROM LinkedServerName.SchemaName.dbo.TableName
Na co otrzymywałem ten błąd:
OLE DB error trace [Non-interface error: Column 'TableRowVersion' (compile-time
ordinal 4) of object '"SchemaName"."dbo"."TableName"' was reported to have a
DBCOLUMNFLAGS_ISROWVER of 0 at compile time and 512 at run time].
Msg 7356, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' supplied inconsistent metadata for a column. Metadata
information was changed at execution time.
Ten błąd jest to samo dla każdej innej tabeli, do której próbuję uzyskać dostęp. Co oznacza ten błąd i czy istnieje sposób jego obejścia?
Ponieważ pytanie dotyczy połączenia do innego serwera MS SQL, a nie jakieś inne DBMS (MySQL, PostgreSQL, ...) Ta odpowiedź jest najbardziej ważny jeden w tym przypadku (native jest bardziej wydajnych niż ODBC). Ale nie zadziała, jeśli twój drugi serwer nie jest serwerem MS SQL – DestyNova