проблема связанного сервера на сервере sql при подключении к oracle dbms - PullRequest
3 голосов
/ 24 декабря 2010

Я создал определение связанного сервера в соответствии со статьей по адресу:
http://www.ideaexcursion.com/2009/01/05/connecting-to-oracle-from-sql-server/

Моя цель - перенести строки в таблицы в Oracle 11gR2.

После создания связанногосервер, всякий раз, когда я пытаюсь выбрать таблицу с помощью запроса, например:

SELECT *
FROM [192.168.1.188]..[ESIPARIS].[T_ERROR_LOG]

я получаю ошибку ниже:

Msg 7356, Level 16, State 1, Line 1
The OLE DB provider "OraOLEDB.Oracle" for linked server "192.168.1.188"
supplied inconsistent metadata for a column. The column "EVENT_OBJECT"
(compile-time ordinal 2) of object ""ESIPARIS"."T_ERROR_LOG"" was reported
to have a "LENGTH" of 50 at compile time and 100 at run time.

Еще одна вещь состоит в том, что он дублирует имена полей всякий раз, когда выборСтатус подготовлен "Sql Server Management Studio", некоторые поля дублируются, как показано ниже:

SELECT [EVENT_DATE]
      ,[EVENT_DATE]
      ,[EVENT_DATE]
      ,[EVENT_DATE]
      ,[EVENT_OBJECT]
      ,[EVENT_OBJECT]
      ,[EVENT_OBJECT]
      ,[EVENT_OBJECT]
      ,[MESSAGE]
      ,[MESSAGE]
      ,[MESSAGE]
      ,[MESSAGE]
      ,[EVENT_ID]
  FROM [192.168.1.188]..[ESIPARIS].[T_ERROR_LOG]

Я был бы очень рад услышать от вас о любых идеях, спасибо за вашу заботу,

С наилучшими пожеланиями,

Kayhan YÜKSEL

Ответы [ 4 ]

4 голосов
/ 24 декабря 2010

Существует ряд сценариев, которые могут вызвать эту ошибку:

  • ваш распределенный запрос в SQL Server ссылается на представление с базовой таблицей в Oracle с определенным образом созданным столбцом первичного ключа, Подробнее
  • есть ошибка при запросе представления с числовыми столбцами. Узнать больше
  • возможно, это проблема несовместимости драйверов, например, использование драйвера MS OleDB вместо того, который предоставляет Oracle.

Если это не драйвер, одним из возможных путей решения этой проблемы является использование OPENQUERY . Иначе. это примечание о поддержке содержит общую информацию об устранении неполадок, связанных с сервером и Oracle.


(Эта проблема довольно общая, поэтому оказалось, что фактическое разрешение не было тем, что я предложил. Я включаю решение @ kayhanyüksel в текст этого ответа для полноты картины.) *

Решено с изменениями в слушателе и tnsnames. Теперь мы можем подключаться с SQL Server к Oracle 11gR2 (работает на 64-битной Red Hat Enterprise Linux 5.4) и наоборот. Документы сопровождаются - Установка соединения с Oracle на SQL Server
- Документация по шлюзам Oracle

3 голосов
/ 12 августа 2013

У меня была та же проблема: В столбце ...... сообщалось, что «ДЛИНА» равна 50 во время компиляции и 100 во время выполнения.и дублируйте имена столбцов при выборе. пока я пытался выполнить запрос в MS SQL из базы данных ORACLE 11g

Я использовал следующий тип запроса, и он работал!

  DECLARE @TSQL varchar(8000)
  SELECT  @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM TableName'')'
  EXEC (@TSQL)

где MyLinkedServer - это имя связанного сервера, а TableName - имя таблицы.

здесь у вас есть ссылка на статью, которая мне помогла: http://support.microsoft.com/kb/314520

0 голосов
/ 06 ноября 2017

У меня та же проблема с клиентом 11g, но она исчезла с клиентской версией 12, которая работает для меня, используя OPENQUERY и to_char с полем, которое создает проблему.

Я подтверждаю, что SQL management studio (независимо от того, какая версия) выдает много дублированных полей. При единственной установке последней версии драйвера у нас могут быть согласованные запросы. Я надеюсь, что это может быть полезно для вас!

0 голосов
/ 07 декабря 2016

Старая тема, но она может кому-то пригодиться. Когда я недавно столкнулся с этой ошибкой, решение проблемы было решено с помощью драйвера MS OleDB вместо поставщика Oracle OleDB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...