11

Mam wielką sprawę: muszę się połączyć (chcę tylko odczytać dane, a nie pisać) do systemu IBM AS/400 mojego klienta (aka iSeries, teraz IBM i) serwer ...Połączenie z serwerem IBM i od Sql Server 2008 R2

Wydaje mi się, że mam wszystkie parametry potrzebne (przyznane mi przez programistę AS/400), ale nie mogę określić, który sterownik muszę użyć, i jeśli mam do tego potrzebne całe oprogramowanie !

Zainstalowałem sterownik IBM AS/400 ClientAccess 5.8 (z łatką dla najnowszego systemu operacyjnego), a teraz próbuję skonfigurować nowy Linked Server na moim serwerze Sql Server 2008 R2 (x64).

Pierwszy problem: Który sterownik powinienem użyć?

mam tak wiele wyborów (ale być może żadna z tych prac !!):

IBM DB2 UDB for iSeries IBMDASQL OLE DB Provider 
IBM DB2 UDB for iSeries IBMDA400 OLE DB Provider 
IBM DB2 UDB for iSeries IBMDARLA OLE DB Provider 

... a może inne generyczne OLEDB/ODBC kierowców ?!

Drugi problem: Gdzie należy umieścić moje parametry (w którym pola mam na myśli!)

W każdym razie, w I wybrać dostawcę dla mojego Linked Server, oczywiście trzeba ustawić swoje parametry ... ale mam tylko to:

  • nazwę użytkownika z użytkownikiem ADMIN
  • hasło użytkownika admin
  • AS/400 adresu IP serwera
  • Nazwa „głównym” archiwum, w którym przechowywane są moje dane (coś podobnego ACG_DATV2)

Trzeci problem: Jak mam napisać moje pytania? Jak odwołać się do "archiwum" AS/400 i tabel?

Nie wiem, jak zbudować moje zapytanie odczytu: gdzie są przechowywane tabele i widoki (?!) I jak mogę je odnieść?

Z góry dziękuję!

Odpowiedz

15

Myślę, że istnieje wiele sposobów na osiągnięcie tego, co chcesz, ale postaram się wyjaśnić, co zrobiłbym w twoim przypadku.

Z tą wersją IBM ClientAccess (a także z łatką) nie powinienem mieć problemów z uzyskaniem połączenia z serwerem połączonym z Sql Server 2008 R2, jeśli używasz poprawnego dostawcy danych.

Przede wszystkim spróbuj skonfigurować swój serwer połączony w ten sposób:

  • Związany nazwa serwera: to, co chcesz, to tylko niestandardową nazwę (na przykład: MYAS400)
  • Provider: IBM DB2 UDB for iSeries IBMDASQL OLE DB Provider
  • Nazwa
  • produktu: nie ważne, coś iSeries Access OLEDB Driver
  • źródło danych: AS/400 adresu IP serwera (na przykład: 192.168.0.1)

Jeśli konfigurujesz serwer połączony za pomocą kreatora lub kodu SQL, po raz pierwszy będzie trzeba uzyskać dostęp do danych serwera AS/400, zostaniesz zapytany o dane uwierzytelniające z typowym oknem systemu iSeries (spójrz na mój przykład).

Ustaw swoją nazwę użytkownika (identyfikator użytkownika) i odpowiednie hasło, bez zwracania uwagi na łańcuch znaków!

enter image description here

Jako ogólna wskazówka (ale jest to związane tylko z moim doświadczeniem!), Starają się unikać znaków specjalnych i górna/dolna skrzynki wyróżnienia ...

Jeśli przyjedziesz tutaj (nie ma problemów w tworzeniu serwera połączonego), serwer połączony powinien działać (aby pierwszy i drugi problem został rozwiązany): zbudujmy pierwsze zapytanie!

Po utworzeniu Linked Server, co potrzebne jest tylko do prawidłowo odwoływać archiwum, biblioteka i oczywiście prawidłową tabelę i Linked Server (według nazwy) z tej informacji, zbudować kwerendę takiego (jest to zwykle składni T-SQL):

SELECT 
    (Field1) 
    , (Field2) 
    , * 
FROM (Linked Server Name).(Catalog Name).(Library).(TableName) 

Jedyna informacja pewnie brakuje to „archiwum”: można łatwo go znaleźć przeglądając drzewo Katalogi wewnątrz nowego serwera połączonego, lub po prostu użyć iSeries Access Navigator narzędzie!

Więc w twoim przypadku, myślę, że zapytanie powinno być (mniej lub bardziej):

SELECT 
    FILIO 
    , DTVLD 
    , DTVLA 
    , SEQZA 
    , CFIMP 
    , PADRE 
    , TPVLD 
    , CMVLD 
    , * 
FROM MYAS400.S242DA0A.ACG_DATV2.ANLE200F 

Zauważ, że S242DA0A jest ważna tylko w moim przypadku ...

Pamiętaj również, że:

  • System AS/400 będzie prawdopodobnie bardzo często wymagał podania danych uwierzytelniających: również po zamknięciu i ponownym otwarciu SSMS.
  • Wydajność? ... lepiej rozmawiać o czymś innym :) ... wypakuj tabele w tabelach Sql Server i zapytaj ich stamtąd! Zrób to za pomocą prostego: SELECT (Fields) INTO myTable FROM (AS/400 table)
  • Próbowałem już tego procesu wiele razy, nie miałem wielu problemów (gdy już się o tym utworzę!) ... ale tylko do odczytu danych (jak prosiłeś)! Nigdy nie próbowałem aktualizować danych !!!

DOBRA SZCZĘŚCIE!

+0

Dzięki, próbuję tego! –

+0

Czy myślisz, że wszystko jest w porządku także w Windows 7 x64? Myślałem, że było wiele problemów ... ale wciąż próbowałem z tym rozwiązaniem! :) –

+1

Powiedziałeś, że masz poprawioną wersję iSeries ClientAccess (5.8): Myślę, że mówiłeś o dodatku Service Pack (a wersja powinna być 4.0.100.1124 - V5R4M0): o ile mi wiadomo, to również koryguje problemy w najnowszym systemie operacyjnym! – MAXE

Powiązane problemy