我的同事正在尝试通过DB2 / MVS适配器将BizTalk 2006 R2连接到z / OS大型机上托管的数据库。测试连接设置时,出现以下错误
1 2 3
| Could not connect to data source 'New Data Source':
The network connection was terminated because the host failed to send any data.
SQLSTATE: 08S01, SQLCODE: -605 |
将设置放入常规连接字符串中并使用.NET代码打开时,这很好。我是BizTalk和DB2的新手。当这个错误浮出水面时,有人可以建议寻找什么吗?
08年8月24日:
好吧,如果使用带有常规DB2连接字符串的普通.NET代码,则可以建立连接并提交查询。该DB2适配器报告的是它甚至无法进行正确的连接握手,更不用说提交查询了。我不确定进行DB2连接所涉及的实际机制是什么。
08年8月25日:
According to this MSDN forums posting, it seems to be a login issue.
我已经看到了,这里不是这样。如果我们将用户名作为Package Collection,它仍然会遇到相同的问题。
08年8月26日:
由于缺少有关从Microsoft产品连接到大型机DB2数据库的信息,因此我承担了检查原始网络数据包的任务,以了解.NET DB2提供程序的连接(有效)与BizTalk 2006 DB2适配器之间的情况。 (炸弹)。我观察到DB2通信是使用DRDA协议完成的。并最终得出结论,由于服务器的回复SECCHKRM数据包中记录了什么,因此BizTalk适配器方法失败了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| DRDA (Security Check)
DDM (SECCHKRM)
Length: 55
Magic: 0xd0
Format: 0x02
0... = Reserved: Not set
.0.. = Chained: Not set
..0. = Continue: Not set
...0 = Same correlation: Not set
DSS type: RPYDSS (2)
CorrelId: 0
Length2: 49
Code point: SECCHKRM (0x1219)
Parameter (Severity Code)
Length: 6
Code point: SVRCOD (0x1149)
Data (ASCII):
Data (EBCDIC):
Parameter (Security Check Code)
Length: 5
Code point: SECCHKCD (0x11a4)
Data (ASCII):
Data (EBCDIC):
Parameter (Server Diagnostic Information)
Length: 34
Code point: SRVDGN (0x1153)
Data (ASCII): \\304\\331\\304\\301@\\301\\331z@\\301\\344\\343\\310\\305\\325\\343\\311\\303\\301\\343\\311\\326\\325@\\206\\201\\211\\223\\205\\204
Data (EBCDIC): DRDA AR: AUTHENTICATION failed |
为什么在成功获得.NET提供程序时,相同的凭据在这里失败,这超出了我的范围。现在,我可以观察到的是,在传输数据包的顺序方面,每种方法之间存在明显的差异。
.NET DB2提供程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| No. Time Source Destination Protocol Info
1 0.000000 [client IP] [DB2 server IP] TCP kpop > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=1
2 0.000399 [DB2 server IP] [client IP] TCP 50000 > kpop [SYN, ACK] Seq=0 Ack=1 Win=16384 Len=0 MSS=1460 WS=0
3 0.000414 [client IP] [DB2 server IP] TCP kpop > 50000 [ACK] Seq=1 Ack=1 Win=65536 [TCP CHECKSUM INCORRECT] Len=0
4 0.000532 [client IP] [DB2 server IP] DRDA EXCSAT | ACCSEC
5 0.038162 [DB2 server IP] [client IP] DRDA EXCSATRD | ACCSECRD
6 0.041829 [client IP] [DB2 server IP] DRDA ACCSEC | SECCHK | ACCRDB
7 0.083626 [DB2 server IP] [client IP] TCP 50000 > kpop [ACK] Seq=108 Ack=542 Win=65535 Len=0
8 0.190534 [DB2 server IP] [client IP] DRDA ACCSECRD | SECCHKRM | ACCRDBRM | SQLCARD
9 0.199776 [client IP] [DB2 server IP] DRDA PRPSQLSTT | SQLATTR | SQLSTT | OPNQRY
10 0.293307 [DB2 server IP] [client IP] TCP [TCP segment of a reassembled PDU]
11 0.293359 [DB2 server IP] [client IP] TCP [TCP segment of a reassembled PDU]
12 0.293377 [client IP] [DB2 server IP] TCP kpop > 50000 [ACK] Seq=870 Ack=1444 Win=64092 [TCP CHECKSUM INCORRECT] Len=0
13 0.293404 [DB2 server IP] [client IP] TCP [TCP segment of a reassembled PDU]
14 0.293452 [DB2 server IP] [client IP] TCP [TCP segment of a reassembled PDU]
15 0.293461 [client IP] [DB2 server IP] TCP kpop > 50000 [ACK] Seq=870 Ack=2516 Win=65536 [TCP CHECKSUM INCORRECT] Len=0
16 0.293855 [DB2 server IP] [client IP] TCP [TCP segment of a reassembled PDU]
17 0.293908 [DB2 server IP] [client IP] DRDA SQLDARD
18 0.293918 [client IP] [DB2 server IP] TCP kpop > 50000 [ACK] Seq=870 Ack=3588 Win=64464 [TCP CHECKSUM INCORRECT] Len=0
19 0.293957 [DB2 server IP] [client IP] DRDA QRYDSC
20 0.294008 [DB2 server IP] [client IP] DRDA QRYDTA
21 0.294017 [client IP] [DB2 server IP] TCP kpop > 50000 [ACK] Seq=870 Ack=4660 Win=65536 [TCP CHECKSUM INCORRECT] Len=0
22 0.294023 [DB2 server IP] [client IP] DRDA SQLCARD
23 0.295346 [client IP] [DB2 server IP] DRDA RDBCMM
24 0.297868 [DB2 server IP] [client IP] DRDA ENDUOWRM | SQLCARD
25 0.421392 [client IP] [DB2 server IP] DRDA PRPSQLSTT | SQLATTR | SQLSTT | OPNQRY
26 0.456504 [DB2 server IP] [client IP] DRDA SQLDARD | OPNQRYRM | TYPDEFNAM | QRYDSC | QRYDTA | ENDQRYRM | TYPDEFNAM | SQLCARD
27 0.456756 [client IP] [DB2 server IP] DRDA RDBCMM
28 0.488311 [DB2 server IP] [client IP] DRDA ENDUOWRM | SQLCARD
29 0.498806 [client IP] [DB2 server IP] DRDA PRPSQLSTT | SQLATTR | SQLSTT | OPNQRY
30 0.630477 [DB2 server IP] [client IP] TCP 50000 > kpop [ACK] Seq=5157 Ack=1579 Win=65171 Len=0
31 0.788165 [DB2 server IP] [client IP] DRDA SQLDARD | OPNQRYRM | TYPDEFNAM | QRYDSC | QRYDTA
32 0.788203 [DB2 server IP] [client IP] DRDA ENDQRYRM
33 0.788225 [client IP] [DB2 server IP] TCP kpop > 50000 [ACK] Seq=1579 Ack=5815 Win=64380 [TCP CHECKSUM INCORRECT] Len=0
34 0.788648 [client IP] [DB2 server IP] DRDA RDBCMM
35 0.795951 [DB2 server IP] [client IP] DRDA ENDUOWRM | SQLCARD
36 0.807365 [client IP] [DB2 server IP] DRDA PRPSQLSTT | SQLATTR | SQLSTT | OPNQRY
37 0.838046 [DB2 server IP] [client IP] DRDA SQLDARD | OPNQRYRM | TYPDEFNAM | QRYDSC | QRYDTA | ENDQRYRM | TYPDEFNAM | SQLCARD
38 0.838328 [client IP] [DB2 server IP] DRDA RDBCMM
39 0.841866 [DB2 server IP] [client IP] DRDA ENDUOWRM | SQLCARD
40 0.973506 [client IP] [DB2 server IP] TCP kpop > 50000 [ACK] Seq=1906 Ack=6304 Win=65482 [TCP CHECKSUM INCORRECT] Len=0 |
BizTalk DB2适配器
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| No. Time Source Destination Protocol Info
1 0.000000 [client IP] [DB2 server IP] TCP 28165 > 50000 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=8
2 0.002587 [DB2 server IP] [client IP] TCP 50000 > 28165 [SYN, ACK] Seq=0 Ack=1 Win=16384 Len=0 MSS=1460 WS=0
3 0.010146 [client IP] [DB2 server IP] TCP 28165 > 50000 [ACK] Seq=1 Ack=1 Win=65536 Len=0
4 0.019698 [client IP] [DB2 server IP] DRDA EXCSAT
5 0.020849 [DB2 server IP] [client IP] DRDA EXCSATRD
6 0.034699 [client IP] [DB2 server IP] DRDA ACCSEC
7 0.036584 [DB2 server IP] [client IP] DRDA ACCSECRD
8 0.042031 [client IP] [DB2 server IP] DRDA SECCHK
9 0.046350 [DB2 server IP] [client IP] DRDA SECCHKRM
10 0.046642 [DB2 server IP] [client IP] TCP 50000 > 28165 [FIN, ACK] Seq=160 Ack=200 Win=65336 Len=0
11 0.053787 [client IP] [DB2 server IP] TCP 28165 > 50000 [ACK] Seq=200 Ack=161 Win=65536 Len=0
12 0.056891 [client IP] [DB2 server IP] DRDA ACCRDB
13 0.058084 [DB2 server IP] [client IP] TCP 50000 > 28165 [RST, ACK] Seq=161 Ack=295 Win=0 Len=0 |
有趣的是,.NET提供程序在单个TCP段中发出了各种DRDA协议数据包。另一方面,BizTalk适配器在每个TCP段中仅放置一个协议数据包。我不知道为什么会这样。但是,我目前认为这是一个红色鲱鱼,导致身份验证失败的真正区别在于DRDA数据交换。我不知道DRDA协议,因此必须先研究它,然后才能进一步理解它。
2008年9月18日:
在这个阶段,问题仍然没有解决,因为获得DB2 DBA团队的合作和来自Microsoft的帮助遇到了许多障碍。
我要报告的是,我已经观察到所有成功连接案例与失败尝试案例之间的一个关键差异:
BizTalk DB2适配器在底层使用了Microsoft ODBC DB2驱动程序。其他成功的软件测试都使用IBM DB2 ODBC DRIVER或IBM DB2 ODBC DRIVER – IBMCL1。 IBM驱动程序的参数配置与Microsoft驱动程序不同。但是我们看不到任何明显的关键差异,可能会导致Microsoft驱动程序身份验证失败。
为什么,Microsoft当然花了很长时间才能明确确认这一点:
BizTalk DB2适配器不支持通过DB2Connect的代理连接
由于我们的客户的策略是仅通过DB2Connect访问DB2数据库,因此适配器是不可能的。
更多背景信息
DB2适配器仅用于直接连接到z / OS大型机主机的原因是由于法律限制。 从技术上讲,可以与DB2Connect进行连接,但是IBM已将其设置为优先节点,并阻止了其他方合法地建立正确的DRDA序列进行连接。
根据此MSDN论坛帖子,这似乎是一个登录问题。
我从来没有使用过此适配器,而是我自己,所以我在猜测,但这可能与BizTalk用于连接的帐户有关,或者您的端口配置不正确。