11

私には大きな問題があります。顧客のIBMAS/ 400(別名iSeries、現在はIBM i)サーバーに接続する必要があります(書き込みではなく、データを読み取りたいだけです)。

必要なすべてのパラメーターがあると思いますが(AS / 400プログラマーから提供されたものです)、使用する必要のあるドライバーがわかりません。また、これに必要なすべてのソフトウェアがあるかどうかもわかりません。

Linked ServerIBM AS / 400 ClientAccess 5.8ドライバー(最新のOS用のパッチ付き)をインストールしましたが、SQL Server 2008 R2(x64)サーバーで新しいドライバーを構成しようとしています。

最初の問題:どのドライバーを使用する必要がありますか?

私にはたくさんの選択肢があります(しかし、おそらくこれらの作品はどれもありません!!):

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

...または他の汎用OLEDB/ODBCドライバー?!

2番目の問題:パラメータをどこに置くべきか(つまり、どのフィールドに入れるべきか!)

いずれにせよ、私は自分のプロバイダーを選択しますがLinked Server、明らかにパラメーターを設定する必要があります...しかし、私はこれしか持っていません:

  • ADMINユーザーのユーザー名
  • ADMINユーザーのパスワード
  • AS/400サーバーのIPアドレス
  • 私のデータが保存されている「メイン」アーカイブの名前(のようなものACG_DATV2

3番目の問題:クエリをどのように書くべきですか?AS / 400の「アーカイブ」とテーブルを参照するにはどうすればよいですか?

読み取りクエリを作成する方法がわかりません。テーブルとビュー(?!)はどこに保存され、どのように参照できますか?

前もって感謝します!

4

1 に答える 1

15

あなたが望むことを達成する方法はたくさんあると思いますが、私があなたの場合に何をするかを説明しようと思います。

そのバージョンのIBMClientAccess(およびパッチ)を使用すると、正しいデータプロバイダーを使用していれば、SQL Server2008R2リンクサーバーに接続する際に問題が発生することはありません。

まず、リンクサーバーを次のように構成してみてください。

  • リンクされたサーバー名:必要なもの、それは単なるカスタム名です(例MYAS400:)
  • プロバイダー:IBM DB2 UDB for iSeries IBMDASQL OLE DB Provider
  • 製品名:重要ではありません、のようなものiSeries Access OLEDB Driver
  • データソース:AS / 400サーバーのIPアドレス(例192.168.0.1:)

ウィザードまたはSQLコードを使用してリンクサーバーを構成する場合、AS / 400サーバーのデータに初めてアクセスする必要があるときは、通常のiSeriesウィンドウで資格情報の入力を求められます(私の例を参照してください)。 )。

文字列の大文字小文字を区別せずに、ユーザー名(ユーザーID)と相対パスワードを設定してください!!

ここに画像の説明を入力してください

一般的なヒントとして(ただし、これは私の経験にのみ関連しています!)、特殊文字や大文字と小文字の区別は避けてください...

ここに到着した場合(リンクサーバーの作成に問題はありません)、リンクサーバーは機能するはずです(最初と2番目の問題が解決されます):最初のクエリを作成しましょう!

リンクサーバーが作成されたら、必要なのはアーカイブ、ライブラリ、そしてもちろん正しいテーブルとリンクサーバー(名前で)を正しく参照することだけです。この情報を使用して、次のようなクエリを作成します(これは通常のことです) T-SQL構文):

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

おそらく不足している情報は「アーカイブ」だけです。新しいリンクサーバー内のカタログツリーを参照して簡単に見つけることができます。または、iSeries Access Navigatorツールを使用するだけです。

したがって、あなたの場合、クエリは(多かれ少なかれ)次のようになります。

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

S242DA0A私の場合にのみ有効であることに注意してください...

また、次のことも忘れないでください。

  • AS / 400は、おそらく非常に頻繁に資格情報を要求します。SSMSを閉じて再度開いた場合も同様です。
  • パフォーマンス?...他のことについて話す方が良いです:) ... Sql Serverテーブルのテーブルを抽出し、そこからクエリを実行します。簡単にそれを行います:SELECT (Fields) INTO myTable FROM (AS/400 table)
  • 私はこのプロセスを何度も試しましたが、(一度熟練すると)それほど問題はありませんでした...しかし(あなたが尋ねたように)データを読み取るためだけです!データを更新しようとしたことはありません!!!

幸運を!

于 2012-08-27T08:01:19.967 に答える