Связанная база данных SQL Server с ошибкой "несогласованные метаданные"

в настоящее время я запускаю сторонний программный пакет, который использует SQL Server в качестве своей базы данных. У меня есть второй экземпляр SQL Server, работающий в другом месте, и некоторые приложения, которые я создаю в этом экземпляре SQL Server, должны получить доступ к некоторым данным в стороннем программном обеспечении. Итак, я создал соединение ODBC между полями и настроил сторонний SQL server в качестве связанного сервера в моей версии SQL Server. В качестве теста я выполнил что-то вроде следующего утверждения из моего SQL server, доступ к одной из таблиц сторонних разработчиков:

SELECT * FROM LinkedServerName.SchemaName.dbo.TableName

к которому я получил эту ошибку:

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.

эта ошибка одинакова для любой другой таблицы я пытаюсь получить доступ. Что значит эта ошибка, и есть ли способ обойти это?

3 ответов


у меня это произошло несколько раз. Единственным обходным путем, который я нашел, было использование OPENQUERY.

SELECT * FROM OPENQUERY(LinkedServerName, 'SELECT * FROM DBName.Schema.Table')

кроме того, выбор, который вы опубликовали выше, имеет неправильное имя части 4 (может быть просто опечатка, но я не был уверен). Он должен быть!--1-->


Server: 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.

Если для запроса данных из базы данных связанного сервера используется синтаксис имени из четырех частей, может появиться это сообщение об ошибке. Чтобы обойти эту проблему, можно использовать синтаксис OPENQUERY для запроса данных из базы данных связанного сервера. Для получения более подробной информации об этом сообщении об ошибке можно включить флаг трассировки 7300. Чтобы включить флаг трассировки 7300, выполните следующую инструкцию Transact-SQL:

DBCC TRACEON(7300)

Я решил это с помощью этих шагов

1) Шаг 1:

• в SQL Server Management Studio откройте связанные серверы, а затем "новый связанный сервер".

• внутри появились мастера, выберите вкладку Общие.

* укажите псевдоним в поле "связанный сервер".

• выберите SQL Native Client в качестве поставщика.

• добавьте sql_server в поле "Название продукта" (это магия).

• In "Источник Данных" – Укажите имя хоста, который будет использоваться в качестве связанного сервера.

2) Шаг 2:

• на вкладке Безопасность-укажите правильные параметры безопасности (например, контекст безопасности)

3) Шаг 3:

• на вкладке "Параметры сервера " - поместите" доступ к данным", RPC," RPC Out "и" использовать удаленное сотрудничество".

4) Шаг 4:

• Наслаждаться.

http://alexpinsker.blogspot.com.br/2007/08/how-to-give-alias-to-sql-linked-server.html