【DB2】DB2でLINQを使う(のに失敗)

投稿日:

Develop a sample application using LINQ programming and the ADO.NET Entity Framework with IBM DB2, IDS, and U2 servers

参照先の記事にあるように、DB2でLINQを使ってみるべし!!と思ったのでやってみましたが、
結論から言うと、全然ダメでした。。。

kの試した環境は以下の通りです。

■物理マシン1■
・Windows XP Professional SP2
・Visual Studio 2008 Professional SP1
・DB2V9.5 EE FP3b

■物理マシン2■
・Windows XP Home SP3
・Visual Studio 2008 Professional SP1

■仮想マシン1■
・Windows Vista SP1
・Visual Studio 2008 Professional SP1

■仮想マシン2■
・Windows Vista SP1
・Visual Web Developer 2008 SP1

■データベース仮想マシン■
・Windows Server 2003 SE R2 SP2(32bit)
・DB2V9.5 EE FP3b


まず物理・仮想の各クライアントマシンでやってみた、
「IBM Data Server Driver for ODBC, CLI, and .NET」のインストールですが、
画面のように必ずエラーになってしまいます。

db2lswtchCLI_error.jpg

いやらしいのが、画面上はエラーと出ていますが、
この後「インストール完了」のダイアログが出るんですよ、これがまた。
で、その後の手順をどんどん次に進めていくことができるのですが、
どーもこれが一番悪いんじゃないか?と思っています。
ちなみに「IBM Data Server Driver for ODBC, CLI, and .NET」をアンインストールする際も、
このエラーダイアログが表示されていました。


次に、上記を無視して進んでいった場合の話ですが、
DB2に対して以下のようなコマンドを発行してテスト接続してみよう、とあるのですが、
これが全然うまくいきません。

testconn20 database=sample;server=localhost:50000;userid=user;password=password


kのトコではこんな感じでガンガンエラーが出ていました。

C:\Program Files\IBM\IBM DATA SERVER DRIVER\bin>testconn20 database=sample;server=localhost:50000;userid=db2admin;password=db2admin

Step 1: Printing version info
.NET Framework version: 2.0.50727.3053
DB2 .NET provider version: 9.0.0.2
DB2 .NET file version: 9.5.3.2
Capability bits: ALLDEFINED
Build: 20090226
Factory for invariant name IBM.Data.DB2 verified
Factory for invariant name IBM.Data.Informix verified
IDS.NET from DbFactory is Common IDS.NET
VSAI assembly version: 9.1.0.0
VSAI file version: 9.5.3.254
Elapsed: 29

Step 2: Connecting using "database=sample;server=localhost:50000;userid=db2admin;password=db2admin"

Unable to open socket to server:

0ERROR [08001] [IBM] SQL30081N 騾壻ソ。繧ィ繝ゥ繝シ縺梧、懷?縺輔l縺セ縺励◆縲?菴ソ逕ィ
縺輔l縺滄 壻ソ。繝励Ο繝医さ繝ォ:"TCP/IP"縲?菴ソ逕ィ縺励※縺?k騾壻ソ。 API: "SOCKETS"
縲?繧ィ繝ゥ繝シ縺梧、懷?縺輔l縺溘Ο繧ア繝シ繧キ繝ァ繝ウ: "127.0.0.1"縲?繧ィ繝ゥ繝シ繧呈、懷?縺励◆ 騾壻ソ。髢「謨ー:"recv"縲?繝励Ο繝医さ繝ォ蝗コ譛峨お繝ゥ繝シ繝サ繧ウ繝シ繝? "10054"縲?%2S"縲?%3S"縲 SQLSTATE=08001


Some things to consider:
- is the port number correctly specified
50000 is the default for LUW servers
svcename dbm cfg parm for LUW servers
446 is the only port for iSeries servers, default for zSeries
- for a LUW server, is the TCPIP listener started
db2set DB2COMM=TCPIP, db2stop / db2start


Test failed.

C:\Program Files\IBM\IBM DATA SERVER DRIVER\bin>


なんとなーく、ソケットが開いてねぇとか、
エラーコードからググって引っかけたSQL30081NやDB2をstop/startした際に吐かれたSQL5043NをDB2Forumのやりとりを参考にしてみるものの、今のところ解決していないです。


ちなみにデータベース仮想マシンで同じことをやってみると、
以下のようになります。

C:\Program Files\IBM\SQLLIB\BIN>testconn20.exe database=sample;server=localhost: 50000;userid=db2admin;password=db2admin

Step 1: Printing version info
.NET Framework version: 2.0.50727.832
DB2 .NET provider version: 9.0.0.2
Capability bits: ALLDEFINED
Build: 20081210
Factory for invairant name IBM.Data.DB2 verified
Elapsed: 6.202034

Step 2: Connecting using "database=sample;server=localhost:50000;userid=db2admin
;password=db2admin"
0ERROR [58005] [IBM][DB2.NET] SQL0902 An unexpected exception has occurr
ed in Process: 3496 Thread 1 AppDomain: 名前:testconn20.exe
コンテキスト ポリシーがありません。
Function: SQLConnect
CallStack: 場所 System.Environment.GetStackTrace(Exception e, Boolean needFi
leInfo)
場所 System.Environment.get_StackTrace()
場所 IBM.Data.DB2.DB2ConnPool.HandleUnknownErrors(String strFncMsg, Exception
exception, Boolean bThrow)
場所 IBM.Data.DB2.DB2ConnPool.DB2ConnWrapper.Open(String szConnectionString,
IsolationLevel isolevel, Int32 iQueryTimeout, DB2Connection connection, Int32& c
onnectionTimeout, Int32& iServerCP)
場所 IBM.Data.DB2.DB2ConnPool.Open(DB2Connection connection, String& szConnec
tionString, DB2ConnSettings& ppSettings, Object& ppConn)
場所 IBM.Data.DB2.DB2Connection.Open()
場所 TestConn.myClassName.Connect()
場所 TestConn.myClassName.RunSteps()
場所 TestConn.myClassName.Main(String[] args) InnerException Message: 保護さ
れているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れて
いることが考えられます。 Check InnerException property for more detail. SQLSTAT
E=58005

Test failed.


情報を整理すると、

1.「IBM Data Server Driver for ODBC, CLI, and .NET」のインストールに失敗する。
2.「IBM Database Add-ins for Visual Studio」のインストールは成功する。
3.1やテスト接続が失敗してもチュートリアルは先に進むことができるが、
  アプリケーションの作成中にEDMを作成する際、エラーになるので先へ進めなくなる。
4.コマンドでのテスト接続が失敗すると、DB2がstopする。
5.FP3bのServer Driverだけでなく、FP3aでも同様の事象が発生している。

となっています。
多分、kのところの環境だけ(物理と仮想で4台ですが、、、)なのかな。

追って調査しますが、とりあえずご報告です。