Published on

February 2, 2017

Понимание связанных серверов в SQL Server

В SQL Server связанные серверы позволяют нам подключаться к другим системам управления реляционными базами данных (RDBMS) и получать доступ к их данным. Однако иногда при работе со связанными серверами могут возникать ошибки. В этой статье мы рассмотрим одну такую ошибку и ее решение.

Поставщик OLE DB “ASEOLEDB” предоставил несогласованную метаданные для столбца

Недавно клиент столкнулся с ошибкой при попытке выполнить запрос к связанному серверу Sybase. Они попытались выполнить следующий запрос:

SELECT * 
FROM SYBASESERVER.prodxc.dbo.sysobjects

Однако этот запрос завершился с ошибкой:

Msg 7356, Level 16, State 1, Line 1
Поставщик OLE DB "ASEOLEDB" для связанного сервера "SYBASESERVER" предоставил несогласованную метаданные для столбца.
Столбец "versionts" (порядковый номер времени компиляции 20) объекта "prodxc.dbo.sysobjects" был объявлен с флагом "DBCOLUMNFLAGS_ISFIXEDLENGTH" равным 16 на этапе компиляции и 0 на этапе выполнения.

При дальнейшем исследовании мы обнаружили, что проблема, казалось, связана с конкретной таблицей “sysobjects”. Для устранения неполадки мы предложили попробовать выполнить тот же запрос с другими таблицами в системном каталоге, и удивительно, эти запросы успешно выполнились без проблем.

В качестве временного решения мы рекомендовали использовать формат запроса связанного сервера OPENQUERY:

SELECT * 
FROM OPENQUERY([SYBASESERVER], 'SELECT * FROM PRODXC.DBO.SYSOBJECTS')

Этот формат обходит проблему и позволяет выполнить запрос без ошибок.

При дальнейшем анализе мы обнаружили, что поставщик Sybase OLE DB MDA на сервере Sybase не был обновлен. Важно убедиться, что драйверы на стороне клиента и сервера обновлены, чтобы избежать подобных несоответствий.

Вывод

Связанные серверы в SQL Server предоставляют удобный способ доступа к данным из других RDBMS. Однако важно знать о возможных проблемах, таких как ошибки несогласованной метаданных. Используя формат OPENQUERY и обеспечивая актуальность драйверов, мы можем преодолеть эти проблемы и продолжать работать со связанными серверами без проблем.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.