Ответ 1
Я думаю, что есть много способов добиться того, чего вы хотите, но я попытаюсь объяснить, что бы я сделал в вашем случае.
С этой версией IBM ClientAccess (а также с патчем) у меня не должно быть проблем с подключением к серверу Sql Server 2008 R2, если вы используете правильный поставщик данных.
Прежде всего, попробуйте настроить связанный сервер таким образом:
- Связанное имя сервера: что вы хотите, это просто пользовательское имя (пример:
MYAS400
) - Поставщик:
IBM DB2 UDB for iSeries IBMDASQL OLE DB Provider
- Название продукта: не важно, что-то вроде
iSeries Access OLEDB Driver
- Источник данных: IP-адрес сервера AS/400 (пример:
192.168.0.1
)
Если вы сконфигурируете связанный сервер с помощью мастера или кода SQL, то в первый раз ему потребуется получить доступ к данным сервера AS/400, вам будут предложены учетные данные с типичным окном iSeries (посмотрите в моем примере).
Задайте свое имя пользователя (идентификатор пользователя) и относительный пароль, не считая случая строк.
Как общий отзыв (но это связано только с моим опытом!), старайтесь избегать специальных символов и различий в верхних/нижних случаях...
Если вы приедете сюда (никаких проблем с созданием связанного сервера), Linked Server должен работать (поэтому первая и вторая проблемы решены): пусть построит первый запрос!
После создания связанного сервера все, что вам нужно, это просто правильно ссылаться на архив, библиотеку и, конечно же, правильную таблицу и связанный сервер (по имени): с этой информацией создайте такой запрос ( это обычный синтаксис T-SQL):
SELECT
(Field1)
, (Field2)
, *
FROM (Linked Server Name).(Catalog Name).(Library).(TableName)
Единственной информацией, которую вы, вероятно, не хватает, является "архив": вы можете легко найти ее, просматривая дерево Каталогов внутри вашего нового Linked Server, или просто используйте инструмент iSeries Access Navigator
!
Итак, в вашем случае, я думаю, что запрос должен быть (более или менее):
SELECT
FILIO
, DTVLD
, DTVLA
, SEQZA
, CFIMP
, PADRE
, TPVLD
, CMVLD
, *
FROM MYAS400.S242DA0A.ACG_DATV2.ANLE200F
Обратите внимание, что S242DA0A
действует только в моем случае...
Помните также, что:
- AS/400, вероятно, попросит вас ввести учетные данные очень часто: также, если вы закроете и снова откроете SSMS.
- Производительность?... лучше поговорить о чем-то еще:)... извлеките таблицы в своих таблицах сервера Sql и запросите их оттуда! Сделайте это с помощью простого:
SELECT (Fields) INTO myTable FROM (AS/400 table)
- Я пробовал этот процесс много раз, у меня не было много проблем (как только я получу навыки!)... но только для чтения данных (как вы просили)! Никогда не пытались обновлять данные.
УДАЧА!