none
Problem inserting DBCS or Unicode Values via a Stored Procedure with the DB2 Adapter for DB/400 RRS feed

  • Question

  • Customer has the following Problem with the DB2 Adapter for DB2 on an AS400 calling a Stored Procedure to insert i.e. Chinese or Japanese Characters into a Table. Data comes from an UTF-8 coded CSV File that gets converted to XML; environment is BizTalk 2013 and HIS 2013 using the OLEDB Provider for DB2.

    Protokollname: Application

    Quelle:        BizTalk Server

    Datum:         18.03.2014 13:50:19

    Ereignis-ID:   5754

    Aufgabenkategorie:(1)

    Ebene:         Error

    Schlüsselwörter:Classic

    Benutzer:      Nicht zutreffend

    Computer:      DE22STV103.kkeu.local

    Beschreibung:

    A message sent to adapter "DB2" on send port "KKItemTextApp01.Output.A1P_Z1" with URI "DB2://Z1STGT1:446/Z1STGT1/BIZPROCS" is suspended.

     Error details: Invalid string or buffer length. SQLSTATE: HY090, SQLCODE: 80

     MessageId:  {C478C8AB-2920-4936-8CFF-9C051A135B38}

    InstanceID: {60BA0F4D-EF4B-4C89-999A-2A721787AD44}

     

    The error occurs when data is sent over like

    01;08;61;4711 ;17;パーティション 半透明曲線12;2;

    If the data is sent without the marked 2 above the call succeeds

    The parameter for this variable in the SP are defined as vargraphic(40)  and the CCSID is 13488

    Interesting is that the DB2 Adapter Schema Generation Wizard shows the data type not as vargraphic(40)  but as varchar(40).  If the buffer of the variable is enlarged to say 120 the SP Call succeeds but this would cause the customer a huge effort to change all the occurrences of this type in particular

    So the questions are:

    If this a known problem?

    Is there a fix for it beside the workaround mentioned above

    The Release of the DB2/400 is V6R1M0 

    PTF-Group

    Description

    Level

    Status

    SF99610

    CUMULATIVE PTF PACKAGE C3058610

    13058

    Installiert

    SF99609

    GROUP HIPER

    141

    Installiert

    SF99608

    GROUP SECURITY

    40

    Installiert

    SF99601

    DB2 FOR IBM I

    28

    Installiert

    SF99562

    JAVA

    23

    Installiert

    Thanks,

    Harald

    Thursday, March 20, 2014 10:07 AM

Answers

  • Hi Harald,

    This issue looks familiar to me. We faced this issue with HIS2010 and BizTalk Server 2010/2013 while upgrading from BizTalk Server 2006 R2. We had to create a ticket with Microsoft and the issue was resolved. Bellow are the details:

    Calling DB2 Package Returns Garbage Value

    Issue Description:

    All interfaces which calls DB2 package, the result returned by the package is a garbage value like ကːĀ਀̒؀ in BizTalk2010 while it returns desired value in BizTalk2006R2.

    Root Cause:

    The issue was with Host Integration Server which has been fixed by Microsoft. Per Microsoft Support Engineer, following is the root cause of this issue:

    We have determined this is a parsing problem in reading the SRVCOD (severity code) when processing the SYSCMDRM (System Command Reply Message) that is returned. The SRVCOD can return any of the following values according to the DDM reference manual:

    0 (information only)

    4 (warning)

    8 (error)

    16 (Severe)

    32 (Access Damage)

    64 (Permanent damage)

    128 (Session damage)

    We appear to be processing more than the SRVCOD, including the code point itself, which is why you are seeing what appears to be Unicode.

    Resolution:

    The fix provided by Microsoft contains 2 directories with 2 files in each of the x86 and x64 directories (AccessDDM.dll and ddm.dll). The fix is available at following location:

    XXXXXXXXX\Software\BizTalk\HIS2010_Hotfix

    Extract these files to C:\111072153621534 on your system, and then do the following.

    1. If you are on a 64bit OS, do the following:
      1. cd %snaroot% <enter>
      2. ren AccessDDM.dll AccessDDM.dll.org <enter>
      3. ren ddm.dll ddm.dll.org <enter>
      4. copy C:\111072153621534\x64\AccessDDM.dll
      5. copy C:\111072153621534\x64\ddm.dll <enter>
      6. cd %SNARootWow64% <enter>
      7. ren AccessDDM.dll AccessDDM.dll.org <enter>
      8. ren ddm.dll ddm.dll.org <enter>
      9. copy C:\111072153621534\x86\ AccessDDM.dll <enter>
      10. copy C:\111072153621534\x86\ddm.dll <enter>
      11. reboot the box
    2. If you are on a 32bit OS, do the following:
      1. cd %snaroot% <enter>
      2. ren AccessDDM.dll AccessDDM.dll.org <enter>
      3. ren ddm.dll ddm.dll.org <enter>
      4. copy C:\111072153621534\x86\AccessDDM.dll <enter>
      5. copy C:\111072153621534\x86\ddm.dll <enter>
      6. reboot the box

    HIS 2010 Cumulative Update:

    Per Microsoft, regarding an MSI of the fix, there is a grey area at this time. They are currently in the process of completing their Cumulative Update for HIS 2010. This fix they would prefer to put into the next CU that is expected by <???>, which more aligns things with other groups (SQL, BizTalk, Platforms). Once next CU for HIS 2010 is available, the resolution would be simply install the CU instead of above mentioned resolution.

    And here is that Cumulative Update for HIS2010: http://support.microsoft.com/kb/2616519/en-us

    I believe this is same issue and Microsoft has to look into it for HIS 2013 this time.


    If this answers your question please mark as answer. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.

    • Marked as answer by Pengzhen Song Thursday, March 27, 2014 1:22 PM
    Friday, March 21, 2014 8:23 AM

All replies

  • Hi Harald

    Thanks for sharing the workaroud with us.

    For this issue, I think you could also consider submit it to BizTalk | Microsoft Connect, it works with members of the Microsoft BizTalk Server team and the community to identify, collaborate, and evaluate the importance of issues, recommend workarounds in this site. BizTalk Server team engineers will evaluate this seriously.

    Best regards

    Angie


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    Friday, March 21, 2014 2:32 AM
  • Hi Harald,

    This issue looks familiar to me. We faced this issue with HIS2010 and BizTalk Server 2010/2013 while upgrading from BizTalk Server 2006 R2. We had to create a ticket with Microsoft and the issue was resolved. Bellow are the details:

    Calling DB2 Package Returns Garbage Value

    Issue Description:

    All interfaces which calls DB2 package, the result returned by the package is a garbage value like ကːĀ਀̒؀ in BizTalk2010 while it returns desired value in BizTalk2006R2.

    Root Cause:

    The issue was with Host Integration Server which has been fixed by Microsoft. Per Microsoft Support Engineer, following is the root cause of this issue:

    We have determined this is a parsing problem in reading the SRVCOD (severity code) when processing the SYSCMDRM (System Command Reply Message) that is returned. The SRVCOD can return any of the following values according to the DDM reference manual:

    0 (information only)

    4 (warning)

    8 (error)

    16 (Severe)

    32 (Access Damage)

    64 (Permanent damage)

    128 (Session damage)

    We appear to be processing more than the SRVCOD, including the code point itself, which is why you are seeing what appears to be Unicode.

    Resolution:

    The fix provided by Microsoft contains 2 directories with 2 files in each of the x86 and x64 directories (AccessDDM.dll and ddm.dll). The fix is available at following location:

    XXXXXXXXX\Software\BizTalk\HIS2010_Hotfix

    Extract these files to C:\111072153621534 on your system, and then do the following.

    1. If you are on a 64bit OS, do the following:
      1. cd %snaroot% <enter>
      2. ren AccessDDM.dll AccessDDM.dll.org <enter>
      3. ren ddm.dll ddm.dll.org <enter>
      4. copy C:\111072153621534\x64\AccessDDM.dll
      5. copy C:\111072153621534\x64\ddm.dll <enter>
      6. cd %SNARootWow64% <enter>
      7. ren AccessDDM.dll AccessDDM.dll.org <enter>
      8. ren ddm.dll ddm.dll.org <enter>
      9. copy C:\111072153621534\x86\ AccessDDM.dll <enter>
      10. copy C:\111072153621534\x86\ddm.dll <enter>
      11. reboot the box
    2. If you are on a 32bit OS, do the following:
      1. cd %snaroot% <enter>
      2. ren AccessDDM.dll AccessDDM.dll.org <enter>
      3. ren ddm.dll ddm.dll.org <enter>
      4. copy C:\111072153621534\x86\AccessDDM.dll <enter>
      5. copy C:\111072153621534\x86\ddm.dll <enter>
      6. reboot the box

    HIS 2010 Cumulative Update:

    Per Microsoft, regarding an MSI of the fix, there is a grey area at this time. They are currently in the process of completing their Cumulative Update for HIS 2010. This fix they would prefer to put into the next CU that is expected by <???>, which more aligns things with other groups (SQL, BizTalk, Platforms). Once next CU for HIS 2010 is available, the resolution would be simply install the CU instead of above mentioned resolution.

    And here is that Cumulative Update for HIS2010: http://support.microsoft.com/kb/2616519/en-us

    I believe this is same issue and Microsoft has to look into it for HIS 2013 this time.


    If this answers your question please mark as answer. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.

    • Marked as answer by Pengzhen Song Thursday, March 27, 2014 1:22 PM
    Friday, March 21, 2014 8:23 AM