Как преобразовать двоичные данные с помощью связанного сервера в DB2/AS400 в SQL Server 2012?

У нас есть два сервера баз данных, оба используют SQL Server 2012, но ОС отличается. В более старом из них используется Windows Server 2008R2 Standard, а в более новом - Windows Server 2012R2 Standard, оба варианта - x64. Другое отличие - это точный номер версии SQL Server, поэтому чем старше

  • Microsoft SQL Server Management Studio 11.0.3128.0
  • Компоненты доступа к данным Microsoft (MDAC) 6.1.7601.17514
  • Операционная система 6.1.7601

пока новее

  • Microsoft SQL Server Management Studio 11.0.5343.0
  • Компоненты доступа к данным Microsoft (MDAC) 6.3.9600.17415
  • Операционная система 6.3.9600

Я уже создал правильно работающий связанный сервер для получения данных из нашей базы данных DB2/AS400 на старом сервере. Я использовал Data Access Tool 4.0 для создания строки подключения и получил следующую:

Provider=DB2OLEDB;User ID=****;Initial Catalog=CAT;Network Transport Library=TCPIP;Host CCSID=37;PC Code Page=1252;Network Address=****;Network Port=446;Package Collection=DATA;Default Schema=DATA;Process Binary as Character=True;Units of Work=RUW;Default Qualifier=DATA;DBMS Platform=DB2/AS400;Use Early Metadata=False;Defer Prepare=False;DateTime As Char=False;Rowset Cache Size=0;Binary CodePage=0;Datetime As Date=False;AutoCommit=True;Database Name=TEST_DB;Authentication=Server;Decimal As Numeric=False;Derive Parameters=False;LoadBalancing=False;Persist Security Info=False;Cache Authentication=False;Connection Pooling=False;

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

Например данные со старого сервера по сравнению с новым:

  1. "" === 0x404040
  2. M === 0xD4

Строка подключения, используемая на новом сервере:

Provider=DB2OLEDB;User ID=****;Initial Catalog=CAT;Network Transport Library=TCPIP;Host CCSID=37;PC Code Page=1252;Network Address=****;Network Port=446;Package Collection=DATA;Default Schema=DATA;Process Binary as Character=True;Units of Work=RUW;Default Qualifier=DATA;DBMS Platform=DB2/AS400;Use Early Metadata=False;Defer Prepare=False;DateTime As Char=False;Rowset Cache Size=0;Binary CodePage=0;Datetime As Date=False;AutoCommit=True;Database Name=TEST_DB;Authentication=Server;Decimal As Numeric=False;Derive Parameters=False;LoadBalancing=False;Persist Security Info=False;Cache Authentication=False;Connection Pooling=False;

Я уже попробовал:

  • Использовал Data Access Tool 4.0, потому что он уже работал в прошлом (Process Binary as Character = True)
  • Использовал Data Access Tool 5.0 для большей совместимости с SQL Server 2012 (опция Process Binary не включена)
  • Установленное исправление из службы поддержки MS ( https://support.microsoft.com/en-us/kb/2993741)
  • Перебрал возможные настройки и перепробовал несколько комбинаций
  • Сравнил уже работающий связанный сервер и недавно созданный

Пожалуйста, помогите мне, как я могу решить эту проблему!

1 ответ

Установил драйвер ODBC серии i в систему и настроил системный DSN, который должен подключаться к базе данных.

https://social.msdn.microsoft.com/Forums/en-US/eae2d05f-32e8-4541-87fb-70fc12697d15/ms-ole-db-provider-for-db2-v5?forum=sqldataaccess

Другие вопросы по тегам