locked
SSIS or BizTalk to pull data from SQL Server RRS feed

  • Question

  • Hi ,

    I need to pull xml extract from SQL Server database and drop it in a folder location. Should I be using BizTalk orchestration to send request to SQL database , get response and send the response to the folder location OR should I be sending request to SQL Server and use SSIS package to extract the xml data and drop in a folder location.

    The data is large , enrollments data . Let me know what is the best option.

    Thanks,

    -Venkat


    -Prasad

    Tuesday, April 19, 2016 2:54 PM

Answers

  • I have to pull the XML extract in to BizTalk again and do mapping and convert to edi. Since this is a big file , thought  to do it using SSIS package to drop this file to a file folder and then receive this xml extract, debatch it and then do the mapping , then I can batch and send the file.

    -Prasad

    I would recommend you first analyze what kind of data is coming in the message. It is very rare that large messages/files are interchanged for transactional activities. What I mean to say is most of the scenarios involve large files received as a day-end activity. Do not come to conclusion that all messages should be handled in biztalk itself. If the message is more of data integration and less of business process integration, I would recommend you to use SSIS instead.

    Few tips which might turn out to be useful if you choose BizTalk are below:

    1) Try to avoid usage of Maps.  If possible try to achieve the objective using promoted fields.

    2) Most of the time problems are encountered when these large messages are handled in custom pipelines or .NET components. The reason is that the entire message is loaded into memory at once for any operations on the message. Always use Virtual streams while reading message streams.

    3) If the message size is substantially huge, debatching is the best technique. Develop a custom pipeline component to break the incoming message into smaller parts.

    4) If you need to process the large message end-to-end (inbound to outbound as a single unit), then what you can do is debatch the message at inbound and aggregate all the message at the outbound using Sequential Convoys.

    5) Adjust the "message size threshold".  Any message larger than this size will be buffered to physical disk.

    6) Adjust "message fragment size" property so that the message is split into fragments.  MSDTC will be used to write into message box.

    7) 64 bit version of SQL Server is recommended.

    Refer: http://prashantbaker.blogspot.co.uk/2008/01/handling-large-size-messages.html


    Rachit Sikroria (Microsoft Azure MVP)

    • Proposed as answer by Angie Xu Thursday, April 28, 2016 2:11 AM
    • Marked as answer by Angie Xu Thursday, April 28, 2016 2:11 AM
    Wednesday, April 20, 2016 7:28 AM
    Moderator

All replies

  • Hi Prasad,

    Thank you for posting on MSDN forum.

    Do you want to store the file on drop location or want to do some other process with the file?

    If only for store the file and count of data is more then I would suggest use SSIS package other than BizTalk.

    And Why you want to use Orchestration only for pulling the file and save into folder location.


    Thanks,

    If my reply is helpful please mark as Answer or vote as Helpful.

    My blog | Twitter | LinkedIn

    This post is my own opinion and does not necessarily reflect the opinion or view of Microsoft, its employees, or other MVPs.

    Tuesday, April 19, 2016 3:10 PM
    Moderator
  • I have to pull the XML extract in to BizTalk again and do mapping and convert to edi. Since this is a big file , thought  to do it using SSIS package to drop this file to a file folder and then receive this xml extract, debatch it and then do the mapping , then I can batch and send the file.

    -Prasad

    Tuesday, April 19, 2016 3:20 PM
  • Why you want follow this complicated process?

    Ok, So some more information required.

    Why not processing from database to direct EDI ?

    Please have a look into below MSDN article,

    Walkthrough (X12): Sending Batched EDI Interchanges

    Batching Outgoing EDI Messages


    Thanks,

    If my reply is helpful please mark as Answer or vote as Helpful.

    My blog | Twitter | LinkedIn

    This post is my own opinion and does not necessarily reflect the opinion or view of Microsoft, its employees, or other MVPs.

    Tuesday, April 19, 2016 3:35 PM
    Moderator
  • I am thinking about performance. If getting the large data in to BizTalk  from the Solicit Response, or to pick up the XML file from File folder. Is there any performance difference?


    -Prasad

    Tuesday, April 19, 2016 3:58 PM
  • Can you define your large data? 
    Tuesday, April 19, 2016 8:50 PM
  • I have to pull the XML extract in to BizTalk again and do mapping and convert to edi. Since this is a big file , thought  to do it using SSIS package to drop this file to a file folder and then receive this xml extract, debatch it and then do the mapping , then I can batch and send the file.

    -Prasad

    I would recommend you first analyze what kind of data is coming in the message. It is very rare that large messages/files are interchanged for transactional activities. What I mean to say is most of the scenarios involve large files received as a day-end activity. Do not come to conclusion that all messages should be handled in biztalk itself. If the message is more of data integration and less of business process integration, I would recommend you to use SSIS instead.

    Few tips which might turn out to be useful if you choose BizTalk are below:

    1) Try to avoid usage of Maps.  If possible try to achieve the objective using promoted fields.

    2) Most of the time problems are encountered when these large messages are handled in custom pipelines or .NET components. The reason is that the entire message is loaded into memory at once for any operations on the message. Always use Virtual streams while reading message streams.

    3) If the message size is substantially huge, debatching is the best technique. Develop a custom pipeline component to break the incoming message into smaller parts.

    4) If you need to process the large message end-to-end (inbound to outbound as a single unit), then what you can do is debatch the message at inbound and aggregate all the message at the outbound using Sequential Convoys.

    5) Adjust the "message size threshold".  Any message larger than this size will be buffered to physical disk.

    6) Adjust "message fragment size" property so that the message is split into fragments.  MSDTC will be used to write into message box.

    7) 64 bit version of SQL Server is recommended.

    Refer: http://prashantbaker.blogspot.co.uk/2008/01/handling-large-size-messages.html


    Rachit Sikroria (Microsoft Azure MVP)

    • Proposed as answer by Angie Xu Thursday, April 28, 2016 2:11 AM
    • Marked as answer by Angie Xu Thursday, April 28, 2016 2:11 AM
    Wednesday, April 20, 2016 7:28 AM
    Moderator
  • Can you answer a couple of question first?  Otherwise, any answer is just a guess.

    You're processing enrollments to EDI, correct?

    So, you will be using BizTalk for the EDI conversion?

    Finally, roughly how many members?  'Large' is relative.

    Sunday, April 24, 2016 9:17 PM
    Moderator
  • I am thinking about performance. If getting the large data in to BizTalk  from the Solicit Response, or to pick up the XML file from File folder. Is there any performance difference?

    Well, never, ever make assumptions about 'performance'.  You will always end up solving the wrong problem, a non-problem or just causing problems.
    Sunday, April 24, 2016 9:18 PM
    Moderator