BizTalk DB2 适配器连接错误

Posted

技术标签:

【中文标题】BizTalk DB2 适配器连接错误【英文标题】:BizTalk DB2 adapter connection error 【发布时间】:2008-08-24 07:53:13 【问题描述】:

我的同事正试图通过 DB2/MVS 适配器将 BizTalk 2006 R2 连接到托管在 z/OS 大型机上的数据库。在测试连接设置时,他们收到以下错误

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 的新手。有人可以建议出现此错误时要注意什么吗?

2008 年 8 月 24 日:

好吧,如果使用带有常规 DB2 连接字符串的普通 .NET 代码,则可以建立连接并提交查询。这个 DB2 适配器报告的是它甚至无法进行正确的连接握手,更不用说提交查询了。我不确定建立 DB2 连接所涉及的实际机制是什么。

2008 年 8 月 25 日:

根据this MSDN forums posting的说法,似乎是登录问题。

我已经看到了,但这里不是这样。如果我们将用户名作为包集合,它仍然会遇到同样的问题。

2008 年 8 月 26 日:

由于缺乏有关从 Microsoft 产品连接到大型机 DB2 数据库的信息,我承担了检查原始网络数据包的任务,以了解 .NET DB2 提供程序的连接(有效)和 BizTalk 之间发生了什么2006 DB2 适配器(炸弹)。我观察到 DB2 流量是使用 DRDA 协议完成的。并最终断定 BizTalk 适配器方法失败是因为服务器的回复 SECHKRM 数据包中记录的内容

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 提供程序

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 适配器

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 协议,所以必须先研究一下,然后才能更清楚地理解它。

08 年 9 月 18 日:

现阶段问题还没有解决,获得DB2 DBA团队的合作和微软的帮助遇到了很多障碍。

我想报告的是,我观察到所有成功连接案例与失败尝试之间的一个关键区别:

BizTalk DB2 适配器在底层使用 Microsoft ODBC Driver for DB2。其他成功的软件测试使用 IBM DB2 ODBC DRIVERIBM DB2 ODBC DRIVER – IBMCL1。 IBM驱动的参数配置与微软的驱动不同。但我们没有看到任何明显的可能导致 Microsoft 驱动程序身份验证失败的关键差异。

【问题讨论】:

【参考方案1】:

为什么,微软确实花了足够长的时间来明确确认这一点:

BizTalk DB2 Adapter 不支持通过 DB2Connect 的代理连接

由于我们客户的政策是仅通过 DB2Connect 访问 DB2 数据库,因此适配器是不可能的。

更多背景信息

DB2 适配器仅适用于与 z/OS 大型机主机的直接连接的原因是由于法律限制。从技术上讲,可以使用 DB2Connect 建立连接,但 IBM 已将其设为优先节点,并阻止其他方合法地建立正确的 DRDA 序列以连接到它。

【讨论】:

【参考方案2】:

除了我自己,我从来没有使用过这个适配器,所以我猜,但这可能与 BizTalk 用于连接的帐户有关,或者您的端口配置不正确。

【讨论】:

【参考方案3】:

根据this MSDN forums posting,这似乎是一个登录问题。

【讨论】:

以上是关于BizTalk DB2 适配器连接错误的主要内容,如果未能解决你的问题,请参考以下文章

BizTalk - 传递通知上的路由失败

与 db2 jdbc 的连接错误

通过 SQOOP 连接到 DB2 时出现连接管理器错误

DB2 - ODBC 连接协议特定错误代码 10061

使用 DB2 驱动程序从 Flyway 命令行获取连接错误

BizTalk 2016 sFTP WinSCP - 无法接收更多消息