代码之家  ›  专栏  ›  技术社区  ›  icelava

BizTalk DB2适配器连接错误

  •  1
  • icelava  · 技术社区  · 16 年前

    我的同事正在尝试通过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

    我看到了这一点,但这里的情况并非如此。如果我们将用户名作为包集合,它仍然会遇到相同的问题。

    由于Microsoft产品中缺少有关连接大型机DB2数据库的信息,我承担了检查原始网络数据包的任务,以了解.NET DB2提供程序的连接(正常工作)和BizTalk 2006 DB2适配器(正常工作)之间的情况。我观察到DB2通信是使用DRDA协议完成的。并最终得出结论,BizTalk适配器方法由于服务器的reply SECCHKRM数据包中记录的内容而失败

    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提供程序中成功使用相同的凭据时会失败。现在,我能观察到的是,当涉及到传输的数据包序列时,每种方法之间都有显著的差异。

    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协议,所以我必须先研究它,然后才能理解它。

    在这个阶段,问题仍然没有得到解决,因为从DB2DBA团队获得合作和从Microsoft获得帮助遇到了许多障碍。

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

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

    3 回复  |  直到 10 年前
        1
  •  3
  •   icelava    16 年前

    当然,微软花了足够长的时间来明确确认这一点:

    因为我们客户的策略是只通过DB2Connect访问DB2数据库,所以适配器是不可能的。

    更多背景信息

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

        2
  •  0
  •   Sean Kearon    16 年前

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

        3
  •  0
  •   Mark Brackett    16 年前

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