Salam Y. ELIAS

Share my knowledge & ideas through this simple blog site

About the author

Salam Yacoub Elias I am Chaldean, Iraqi, civil engineer.......read more.
E-mail me Send mail

Recent comments

Authors

Tags

None

    Disclaimer

    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

    © Copyright 2010

    Biztalk BAM SSIS package not executing because of ManagedDTS version

    I was preparing for demo for BAM on a new BTS 2009 platform. I have my app up and runing, bam tabels populated correctly, when I tried to run my Bam_package ssis package to start playing with the cubes in Bamanalysis, I got an error "binaries are not found".
    Opened SSIS studio, added the package created by BTS from MSDB, I found red crosses on the several shapes which uses script opened the script editor and discovered erros (underlined by zicazac lines) on the following 2 lines :

    If
     (Dts.Variables.Count <> 0) Then
     Dts.Variables.Unlock()
    End If

    when hovering on the ziczac lines I read :
    The project currently contains references to more than one version of Microsoft.Sqlserver.ManagedDTS, a direct reference to version 9.0.242.0 and an indirect reference (through 'Microsoft.Sqlserver.Dts.Tasks.ScriptTask.ScriptObjectModel.Variables') to version 10.0.0.0 Change the direct reference to use version 10.0.0.0 (or higher) of Microsoft.Sqlserver.ManagedDTS.

    After some investigation and searcj=hing the web, I did not really find an answer. I decided to export the package to system file and open it in notepad. I discovred references to both versions distributed allover the document.

    I replaced all lines

    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" />

    by

    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" />

    Then I opened the file in BID, compiled the script successfully and redeployed.

    I think this issue is because I have a multi-computer setup for biztalk 2009 using SQL 2008 in addition to some SQL 2005 notification services components. Of course, I have not yet being able to make alerts work in my Biztalk environment.


    Categories: Biztalk | SQL Server | BAM
    Posted by salam on Sunday, February 07, 2010 12:39 AM
    Permalink | Comments (0) | Post RSSRSS comment feed

    Biztalk Dashboard. Nice handy Biztalk admin tool

    I am proud to announce that I have finalized version 1.00 of a toolI called BiztalkDashboard. It provides real time Biztalk platform activity monitoring based on specific performance counters.

    Biztalk server is composed of different components and subsystems each of which has its own specifics. To enable IT professionals monitor effectively their platforms without the need to manually go through steps of configuring perfmon. I decided to create a the tool to enable a Biztalk administrator or developer with an eye of bird at his convenience watch what is going on from  his desktop.

    The tool is based on performance counters in all categories that have their values expressed as “/sec”, i.e message sent /sec.

    The tool targets IT professionals and Biztalk developers to help them acquire good knowledge of their platform. The tool is easy to configure through xml configuration files, display measures in gauges displayed according to a specific category of Biztalk performance counter. In future releases, also I will add log functionalities to log figures in csv files to exploited later in excel. Logging at 4 levels and error handling will be done through enterprise library latest version.

     

    The config file should indicate the name of the server to monitor, otherwise it will default to local machine. The tool should allow changing the server in real time without the need to reinitialize the applications. The tool must can be run from client machines, so security should be taken into consideration.  All gauges should be parameterized dynamically.

    I intend als to add another enhancement for Alerts Sends  when threshold is crossed.

    One log file should be used during a session.

     

    Please follow this link to see a full demo of the tool in  action. I use LoadGen to send 4000 messages to orchestration to test the tool.

     


    Categories: Biztalk
    Posted by salam on Sunday, January 10, 2010 6:11 AM
    Permalink | Comments (4) | Post RSSRSS comment feed

    BTS 2009 Resume in debug mode successfull

    After spending some time while I was trying to debug an orchestration in a new fresh BTS 2009 environment, while in HAT, trying, resume in debug mode which succeds, then I  attach I get a very ugly message

    ****The Following error occured when attaching to the instance
    ****Debugging user validation against "server\Biatalk Server Adminstrators" failed with error: Debugging client is not a biztalk server Administrator.
    This could happen if the Debugging clinet is not a Biztalk Server Administrator.

    If we google, we can see that this exisits since BTS 2004. I tried to search my personal doc, I discovered that I should add "administrator" to BizTalk Server Administrators Group in spite of the fact that everything on the box is running under "administrator"

    Here I have 2 points where I would like Microsoft (BTS dev team) to answer 1 day:
    1st, If am logged as admin, why do I need to explicitly add this user. Why not BTS setup does this by asking somewhere during setup.
    2nd, Why not BTS displays a message indicating that no member was added to the group, with an option to add current user instead of this ugly message that reveals nothing.


    Categories: Biztalk
    Posted by salam on Thursday, December 31, 2009 8:40 PM
    Permalink | Comments (13) | Post RSSRSS comment feed

    Visual Studio 2008 SP1 can not connect to SQL server 2008

    Since 6 months, I am not managing directly sql servers from technical point of view but as a SQL server certified person, I wanted to start playing with the new features that SQL 2008 offers and to likely upgrade my certification.

    I did a fresh new install as follows:

    A - new Hyper-visor child machine with the following software :

                    Win2k8 Enterprise edition

                    SQL Server 2008 Developer edition x64

    B - On a a Vista ultimate x64 SP 1, I installed

                    VS2008 professional with SP1

                    SQL management studio (no server services.)

     

    In the begining I had some problems connecting through SSMS, after some googling and MSDN search I found a good article describing necessary steps to follow regarding win2k8 firewall and advanced security at Configuring the Windows Firewall to Allow SQL Server Access. Once I added the needed rule I managed to connect to the sql 2008 from within the management studio locally and remotely

    Then it turned around that I wanted to dig deep in Entity Framework and decided to follow a tutorial provided in the .NET Framework 3.5 Enhancements Training. The first step was adding a data connection to our beloved AdventureworksLT2008 database.

     

    I launched the wizard in VS, click the "server name" dropdown list, I can see the servers names, choosing the 2008 one , the surprise came when I tried to select a Database,  no DB shows up.

    I started to investigate my client setup, server setup, checked both authentification modes, nothing helped.

    I posted a thread in several newsgroups, and after a long discussion and tests(disabling firewalls, disabling UAC in Vista………), we discovered that in addition to declaring the needed rules as indicated in the link mentioned above, we need to add a second rule as follows :

     

    netsh firewall add allowedprogram program="%ProgramFiles%\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\sqlservr.exe" name="SQLServr" mode=ENABLE scope=ALL

     

    in order to be able to connect from Visual studio.

    So, here I have a question to Microsoft sql team : why not provide this type of information in a clear way inside the documentation, even provide necessary scripts to run? Some junior DBAs, developer, I mean people who are not very firewall-oriented might need this simple information instead of wasting a lot of time.


    Categories: SQL Server
    Posted by salam on Thursday, December 31, 2009 8:38 PM
    Permalink | Comments (1) | Post RSSRSS comment feed

    Recoverable Interchange Proceess issue

    I was very excited when I learned that BTS 2006 had a new feature for processing Interchanges. The terminology “Interchange” comes from the EDI world in which I have spent almost 5 years working with. An interchnage means a container of similar or different  messages. In EDI world is called batch processing. For example, an interchange coming from a buyer partner can contain 1 to n orders something like the following:

    In BTS 2004 and earlier it was not possible to process this interchange if one of the messages has any structural or data problems. Either all messages process successfully or nothing. You can watch this very instructive video provided by Stephen W. Thomas  for a full example with source code download

    BTS 2006 ships with a lot of enhanced and new features one of them is called per instance pipeline configuration. One of the parameters in the  configuration is called Recoverable Interchange Proceess which instructs BT runtime whether to fail the whole interchange or allow correct messages go through to get published and failing errored messages.

    I had an operation which I wanted to optimize with this new feature, so I started testing and validating this feature.

    While I was running some tests and validations, I played with this parameter but the result of execution was always the same behavior as in older version of Biztalk Server.

    After some head scratch and investigation, I noticed that the parameter just underneath "ValidateDocument" was set to true. As soon as I changed it to False, BTS behaved correctly and started to process good messages and fail bad messages as expected.

    So I started wondering why this feature can not execute correctly when setting both Flags to True. What I mean is that BTS should be able to recognize and validate good messages and fails bad messages. As far as BTS can recognize good records from bad ones, so why this wouldn’t work?

    I posted a thread to BT news  group, a very nice guy (Wen) followed and responded that he has reproduced this behavior and a ticket was opened with the BTS product group. I had some mail from MS engineers and understood that this was a known issue with the Product Group but there was no public fix available for the moment

    So, as per Biztalk server product group confirmation,  in order to be able to use this new feature, the following steps should be followed

    1.  "Recoverable interchange" flag is set to true.
    2. "Validate document structure" flag is set to false.
    3. Add document schema to the ‘Document schemas’ collection.
    4. Add your envelope schema to the ‘Envelopes schemas’ collection.
    5. Add the ‘XML validator’ component to the pipeline

     

     


    Categories: Biztalk
    Posted by salam on Saturday, June 14, 2008 9:22 PM
    Permalink | Comments (1) | Post RSSRSS comment feed

    Basic scenario to stress test Biztalk platform with Microsoft LoadGen 2007

    While I was working with Biztalk server 2000 and 2002 over the period 2000 - 2004, I always wished having a tool that allowed me to stress test my production platform without writing custom code and components.

    Hopefully, Microsoft made available a free tool, essentially command line tool, LoadGen to stress test Biztalk server applications. The first version was released back in 2006 for Biztalk server 2004, then in November last year a new version LoadGen 2007 came out.

    There were several reasons behind this new release, the first version was not so popular, didn't get a lot of praise from the community.  Secondly, Biztalk 2006 and Biztalk 2006 R2 brought a raft of new features, especially WCF adapters and RFID capabilities.

    The tool is simple to use but documentation are not very straight forward and I struggled a little bit and googled before achieving the first load test. In this article, I will describe a very basic scenario for using LoadGen 2007. First you need to download the tool at Microsoft BizTalk LoadGen 2007 Tool and install it.

    The tool itself mainly consists of an executable called LoadGenConsole.exe which consumes an xml configuration file to simulate a load test. The scenario is based on one of the examples that comes with Microsoft® BizTalk® Server 2004 Unleashed book written by Scott Woodgate, chapter 9, Sample Orchestration Solution.

    The process accepts a purchase order, check the customer's credit line, and approve the order if the cost is covered by the credit line. If approved, it sends a message to manufacturing to schedule the order (simulated by sending the order to a physical directory). Regardless of the credit decision, it also passes a message back to the customer indicating the status of the order.

    Credit check is done by calling a second orchestration wich calls a .Net component.

    As indicated in the book, although this is a greatly simplified view of an actual purchasing chain, it demonstrates a number of the techniques and capabilities of Biztalk server orchestration, here is a snapshot of the orchestration.

    Microsft Loadgen 2007 comes with several configuration templates which can be customized according to your needs. To stress test our scenario, first of all we need to create a configuration file. I chose to customize the FileToFileG.xml from ConfigFiles\consoleConfigFiles and named it FileToFileLG_MessageCreator.xml, snapshot hereunder,

     

     

    the important tags to mention are :

    <NumThreadsPerSection> : specifies how many concurrent threads will run

    <LotSizePerInterval> : specifies how many files will be sent to the destination port in each lot

    <StopMode> : specifies the default stop conditions for the overall tasks. In my configuration, I want LoadGen 2007 to send 4000 file but to stop after 1 hour in any case.

    <Transport> : depends on which protocol you are using in your adapter. In our case it is a file adapter. LoadGen supports a bunch of protocols such as several WCF protocols, SOAP, HTTP.....

    Then we have a section element which describes the tasks to be carried by LoadGen. It is possible to point LoadGen to a directory where a sample file resides which will be always submitted during the load test which I can call “Static message”,  or provide a template with some parameters so each single message submitted to LoadGen will have different values. We can call this dynamic messages.  I will show later how to configure a Message generator component configuration.

    For this you should create a template based on the sample artifact consumed by the orchestration. You indicate the full path to this template in the tag "Section/SrcFilePath". Of course, we need to provide the destination directory, monitored by our process, where the task send the generated documents. The tag is "Section/Parameters/DtsFilepath" which is POIn.

    Here is a snapshot for this template. As you can see, it is a sample purchase order file needed to be received by the orchestration.

     

    Another important tag in the section element is the MessageCreator element. We specify several parameters,

    <Mode> : specifies bahvior (Synchronous or Asynchronous), for more details please read LoadGen documentation.

    <SleepInterval> : specifies in  in milliseconds the time period that LoadGen waits before generating the next bunch of messages

     <TemplateFilePath> : the file to be handed to the message creator component identifed in the <assembly>. As you can see in the following snapshot,

     

    In the message creator template we define the types and values for each field we want to be replaced with in our sample file as shown below. We create a custom <Field> tag for each corresponding field in our sample template.

    Values for each field will be generated by LoadGen 2007 according to parameters as initial value, size (min and max), do we allow duplicates or not and the type in the field element.

    However, we can also force a range of values for a field instead of being automatically generated which is the case for the custID field in our scenario. For the field custID, I decided that the messages should use a range of values. I created a data file called CustData.txt where I entered some fictitious customer accounts I want my messages to have. The data are separated by a pipe. Then useed the tag <InputFilepath> for the field element to indicate to LoadGen where is the range of data. Here is how the data file look like

    Custom data

    Once all those files are configures, you can run the load test by launching from the command line as follows

    C:\Program Files\LoadGen\Bins>LoadGenConsole "E:\Projects\FileToFileLG_MessageCreator.xml"

     You should see a screen indicating the progress of the test and the end. The first thing to note here is the rate displayed on the screen which a very good first indicator.

     Loadgen in action Dos capture

    My Biztalk 2006 R2 is running inside a virtual machine on a physical 1 quad-proc  server with 4G of RAM. The average of sending messages is 428 messages per second.

    Now we should have 4000 file generated in our POout directory

     It is very interesting to watch/record appropriate performance counters while the load test is running.

    You can check another article which inspired me to write this article, a  step by step tutorial about LoadGen 2007 and WCF at http://connectedthoughts.wordpress.com/2007/11/05/loadgen-2007-and-a-simple-biztalk-wcf-test/,

    other links to some usefull articles about LoadGen 2007 :

    WCF stress testing using BizTalk Server LoadGen

    Finally, I would like to mention that snapshots have been realized with a very cool tool called Cropper, written by Brian Scott and I should say it is a lightweight wonderfull utility.


    Categories: Biztalk
    Posted by salam on Thursday, April 10, 2008 4:00 AM
    Permalink | Comments (2) | Post RSSRSS comment feed

    Great day in my life

    Today, April 5, 2008 is a great day for me, I have setup my web server and installed the blog engine where I will share my knowledge and achievement.
    Please read my biography by clicking about the author to the right. My favorite technical subjects are BizTalk server all versions, WCF and Commerce server.
    My first blog, which I will make public in a couple of days will be about Biztalk server 2006 and stress testing using Microsoft LoadGen 2007.

    I am using BlogEngine.NET 1.3, thanks to BlogEngine.NET team who provided this clearest .net blogging framework, very easy to setup and configure. If you are interested, please visit BlogEngine.NET official website.

    Weather today in Paris is nice, some rains but while I am writing this blog the sun just showed upwhich is a very good sign Laughing


    Posted by salam on Sunday, April 06, 2008 2:47 AM
    Permalink | Comments (3) | Post RSSRSS comment feed