Feb 272007
 

I would suggest increasinge thread usage, this is documented here. My general guideline is the number of physical processors x100, 1 processor 100 threads, 4 processors 400 threads.

If those steps do not fix the problem, then a deeper dive into the performance needs to be considered. If you are using 2006, there are some performance counters that come installed. What I like to look at is the BizTalk:Message Agent, there I like to look at Message publishing throttling state. How do we get to there?

Bring up Performance from Adminstaive tools or c:\perfmon from a dos prompt click on System Monitor and the + sign

Let me not forget the link to Microsoft’s official performance information here, and please refer to the disclaimer on the side of my blog.

 

This should get you well on your way to finding out what is going on, and being able to improve performance of your BizTalk setup.

Feb 202007
 

I just came across another Eric Stott at myspace.com don’t visit this while at work (http://www.myspace.com/ericstott)

I don’t live in England, and am not single, I might be sarcastic, but not this crude.

Feb 122007
 

A few weeks ago, I spent quite a bit of time crafting the XML to load data into the databases. I have a tool that will do all of the heavy lifting. It is pretty self explanatory, you create a list of application types, instances where you associate it with the particular application type, create the IDXrefs and then create the elements. Here you choose the IDXref it’s associated Application Instance and the the CommonID and the AppID. Then to make sure you don’t over write another set of documents, you give it a base name, choose the folder, and the folder you want to save it in, and it will generate all of the files for you, including the setup.xml file. If there are duplicates on either the CommonID or AppID it will add a period to the end of the data.

Here are some screen shots of what it does:

Which results in the following in the xml files in the directory specified

C:\sample\example.listOfAppType.xml

C:\sample\example.listOfAppInstance.xml

C:\sample\example.listOfAppIDXRef.xml

C:\sample\example.listOfIDXRefData.xml

And the best part:

C:\sample\example.setup.xml

If you would like this application, click this:

Feb 072007
 

Tom did a good job of explaining the database structure and following up on this post, getting the data into the database is somewhat a challenging process.

So in putting together the import process, I was trying to get my head around how to create the various xml files to import. Since I am a visual guy, I put this little relationship diagram so I can easily relate my data elements to the example in the documentation xml files of listOfAppType.xml, listOfAppInstance.xml, listOfIDXref.xml, and listOfIDXrefData.xml. (It is a big picture, so click on it and then click on the picture in the window that opens up to see the origina size (at least in IE7))

Some other things to be aware of:

When importing the data, there is the case where you will need to map a BA rule as the following verbiage ‘for input value of A map an X, for value of E map Z for all others map Y’ or you are given the following table:

Incoming value   Output Value

A                        X

B                        Y

C                        Y

D                        Y

E                        Z

Since there is the following constraints on the xref_IDXRefData table

CONSTRAINT [IX_xref_IDXRefData_appID] UNIQUE NONCLUSTERED
(
[appID],
[idXRefID],
[appInstanceID]
) ON [PRIMARY] ,
CONSTRAINT [IX_xref_IDXRefData_commonID] UNIQUE NONCLUSTERED
(
[commonID],
[idXRefID],
[appInstanceID]
) ON [PRIMARY]

on either the commonID or the appInstanceID column can’t have a duplicate value. The first work around was to import the data with spaces in the following example

<listOfIDXRefData>
      <idXRef name=”Subscriber”>
          <appInstance name=”AppInstance_01″>
              <appID commonID=”X”>A</appID>
              <appID commonID=”Y”>B</appID>
              <appID commonID=”Y “>C</appID>
              <appID commonID=”Y  “>D</appID>
              <appID commonID=”Z”>E</appID>
          </appInstance>
     </idXRef>
</listOfIDXRefData>

In the map I would have the following logic where it would retrieve the appID and I would simply trim the spaces off of the right

However I was unable to import the data using the BTSXRefImport.exe, stating that a key contraint was violated.

I then changed the data to look like this (notice the periods instead of the spaces):

<listOfIDXRefData>
      <idXRef name=”Subscriber”>
          <appInstance name=”AppInstance_01″>
              <appID commonID=”X”>A</appID>
              <appID commonID=”Y”>B</appID>
              <appID commonID=”Y.”>C</appID>
              <appID commonID=”Y..”>D</appID>
              <appID commonID=”Z”>E</appID>
          </appInstance>
     </idXRef>
</listOfIDXRefData>

And in the map I took the first byte of the result of the appID

This worked out great for me except in the following situation

Incoming value   Output Value

A                        XX

B                        Y

C                        Y

D                        YY

E                        Z

I first created the following xml structure

<listOfIDXRefData>
      <idXRef name=”Subscriber”>
          <appInstance name=”AppInstance_01″>
              <appID commonID=”XX”>A</appID>
              <appID commonID=”Y”>B</appID>
              <appID commonID=”Y.”>C</appID>
              <appID commonID=”YY”>D</appID>
              <appID commonID=”Z”>E</appID>
          </appInstance>
     </idXRef>
</listOfIDXRefData>

The problem was that I could not just take the right two bytes because that would represent the following table and create a ‘Y.’ if ‘C’ was sent in. 

Incoming value   Output Value

A                        XX

B                        Y

C                        Y.

D                        YY

E                        Z

I finally created the final output

<listOfIDXRefData>
      <idXRef name=”FirstValue”>
          <appInstance name=”AppInstance_01″>
              <appID commonID=”X”>A</appID>
              <appID commonID=”Y”>B</appID>
              <appID commonID=”Y.”>C</appID>
              <appID commonID=”Y..”>D</appID>
              <appID commonID=”Z”>E</appID>
          </appInstance>
     </idXRef>
</listOfIDXRefData>

<listOfIDXRefData>
      <idXRef name=”SecondValue”>
          <appInstance name=”AppInstance_01″>
              <appID commonID=”X”>A</appID>
              <appID commonID=”Y”>D</appID>
           </appInstance>
     </idXRef>
</listOfIDXRefData>

I extracted the data, took the first character from each getCommonID result and then concatonated the values together: