Integration Experts – Dipesh Avlani

BizTalk Server, WCF, WF and Cloud computing…

Archive for the ‘General’ Category

BizTalk 2013 Licensing – cheaper? Maybe, maybe not!

Posted by DipeshA on March 25, 2013

Note this is not the official Licensing document for BizTalk Server! Please consult Microsoft before making any purchase decisions.

Overview

With the BizTalk 2013 (english locale) SKUs hitting the Microsoft sites for purchase in April. It is important to note an important change Microsoft have made to the BizTalk 2013 licensing model. Up till now (i.e. BizTalk 2010), BizTalk followed a per processor model (ie a physical socket) . With BizTalk 2013, Microsoft have changed the model to be per core. Just like SQL Server.

But what does core licensing mean? How does it affect your costs? For this, one must understand the concept of a core.

As per the wiki, a core is a central processing unit within a processor. So a dual core processor would have 2 cores, a quad core would have 4 cores and so on.

The above is a dual core processor with 2 cores.

The per processor model of licensing has its own problems. One could buy a processor license for a quad core processor and still end up paying for one processor and get the processing power of 4 processors. With the new model, a license has to be purchased for every core. That is 4 licenses would be required in this particular example. Core prices are costed as the 1/4 of the processor license cost.

Lets do some cost analysis between the two model for the same spec (prices are approx):

Per Processor (quad-core): ~$40,000 x 1 = ~$40,000

Per Core (quad-core):  ~$10,000 x 4 = ~$40,000

From the above, there is not much difference in this example. However, if you ended up using 5 cores for argument sake, what do the numbers look like between the two models?

Per Processor (quad-core + single core): ~$40,000 x 2 = ~$80,000

Per Core (quad-core + single core):  ~$10,000 x 5 = ~$50,000

There you have significant cost savings for almost $30,000 with the new model!

Some Key-points

  • All the cores in the server must be licensed.
  • Licenses can be purchased in pack of two.
  • Minimum of 4 core licenses required (if your server has less than 4 cores, ex: single core and dual core machines)
  • Actual number of core licenses required may vary based on processor type and core factor.

Prices

The estimated price for a core license is approximately $10,835 for Enterprise and $2,485 for Standard.

How do you calculate the cores?

In order to calculate the cores, core-factor must be understood. A core-factor is different for different brands of processors.

Type Core-factor
Single Core 4
Dual Core 2
AMD processors (6 cores or above) 0.75
All others 1

So if you were using a 12 core AMD processor, the license cost would be calculated as follows:

AMD: 12 cores x 0.75 = 9 core licenses required.

Intel: 12 cores x 1 = 12 core licenses required.

Conclusion

From the above, it is apparent that the licensing costs entirely depend on how BizTalk Server is deployed and the type of hardware. It affects different companies in different ways.

Posted in BizTalk 2013, General | Tagged: , | Leave a Comment »

BAM_AN packages not executing by SQL jobs

Posted by DipeshA on January 25, 2013

I recently hit an issue with the BAM_AN packages executed through a SQL job  failing with the following message.

Object reference not set to an instance of an object.

at…. UpdateDataSourceAndGetAnnotation(String cubeName, String asServerName, String asDatabaseName, String ssServername, String ssDatabaseName)  

The reason was the account under which my SQL jobs were running did not have access to the Analysis Services. Solution was to right click on the root node –> properties and add the account under the security tab and it started working.

Posted in BAM, General | Tagged: , , | Leave a Comment »

BAM: Regenerating data for non-RTA views

Posted by DipeshA on December 19, 2012

If you have log-shipped or moved your BAM databases to another environment, you might find that the legacy data in your non-rta view vanishes and only recent data is displayed.

This defeats the purpose of having scheduled aggregations to view data over months. However, there is a way to “reset” your cubes.

In the BAMPrimaryImport database, there is a table called ‘bam_Metadata_AnalysisTasks’. This table keeps track of range of records that the cube processed each time it ran. This range is also used to define the view ‘bam_<cubename>_CompletedInstancesWindow’ that is used to populated the staging tables for aggregation.

The trick is to delete all the records from this table in the BAMPrimaryImport database.

Delete from bam_Metadata_AnalysisTasks where CubeName=’<cubename>’

GO

Insert INTO bam_Metadata_AnalysisTasks(CubeName,MinRecordID,MaxRecordID,LastStartTime,LastEndTime)

VALUES (‘<cubename>’,NULL,NULL,NULL,NULL)

Note: Run the above queries for all the cubes in question. DO NOT RUN IN PROD BEFORE TESTING.

After executing the above command, run the corresponding BAM_AN_<cubename> package. After this has completed, browse to the BAM portal and you will see all historical data again.

Cheers.

Posted in BAM, General | Tagged: , , , | Leave a Comment »

BAMAlerts – The activation state cache could not be updated.

Posted by DipeshA on December 18, 2012

If you have log shipped or detached/attached the BAMAlerts databases, you will have issues starting the notification service on the BizTalk server for BAM alerts. The reason for this, when these databases are restored, the the ‘Cross-Database Ownership Chaining’ option on the BAMAlertsApplication and BAMAlertsNSMain databases is disabled and greyed out. Greyed out because it can only be enabled via a script.

cross_chaining

To enable these options, run the following command (you need to be sys-admin):

–set chaining for a database

alter database BAMAlertsApplication set DB_CHAINING ON

GO

alter database BAMAlertsNSMain set DB_CHAINING ON

GO

—-

Once done, you should be able to start the BAM alerts notification service on the BizTalk Server.

Posted in BAM, BizTalk 2006/2009, BizTalk 2010 R2, BizTalk 2013, General | Tagged: , , , , | Leave a Comment »

BizTalk Server 2010 R2 (TAP) Available

Posted by DipeshA on August 15, 2012

The latest version of BizTalk is available (CTP). This Technology Adoption Program (TAP) is for BizTalk Server 2010 R2, the 8th BizTalk Server release from Microsoft.
BizTalk Server 2010 R2 delivers enhancements in the following feature categories:
  • Electronic Data Interchange
    • Updated standards support
    • IaaS offering
  • Messaging
    • Ordered delivery enhancements
    • HL7 standards update
  • Enhanced Visual Studio 2012, SQL Service 2012, Systems Center 2012 experience
  • Support for SQL Server 2012 High Availability
  • Integration with Windows Azure Service Bus and Workflow
  • Addition of REST adaptor for integrating with Restful endpoints
  • BizTalk Server Cloud IaaS offering for development and test scenarios

You can signup if you interested in being a part of this release.

Posted in BizTalk 2010 R2, General | Tagged: , , , | Leave a Comment »

SignalR & BizTalk

Posted by DipeshA on July 26, 2012

For those who have never heard about SignalR, it is an async .net library for building real-time web applications. This sounds so interesting that it can actually open another dimension for applications requiring realtime updates via BizTalk.

SignalR helps pushing data from the server to the client (not just browser clients). SignalR makes it dead easy and handles all the heavy lifting for you.

There is a very interesting article by Kent Weare which talks about SignalR and how it can be used with BizTalk.

http://kentweare.blogspot.com.au/2012/07/part-1-biztalk-signalr.html

Posted in BizTalk 2006/2009, General | Tagged: , | Leave a Comment »

Retry pattern and Suspend shape – the gotchas!

Posted by DipeshA on June 28, 2012

I have just come out a frustration moment with BizTalk where it was behaving differently when compared to a similar environment. I have a retry pattern in one of my orchestrations and a suspend shape within the catch block. See screenshot below:

One would hope that when the administrator resubmits the suspended message, it would continue from the point it left of (that is continue in the loop). However, what I saw was, the orchestration would go into the “active” state indefinately.  Also, when trying to terminate this active instance, the terminate job would show as pending and the service wouldnt terminate unless the host was restarted.

Further investigation revealed that the suspended orchestration has no related message (or context). See screenshot below.

To eliminate any false positives, I deployed the same app on our test environment and saw that there was a message linked to the suspended orchestration.

This is where I was stumped!

After hours of pondering, I thought of the famous MBV! I ran some analysis via the MBV and I found this in the report:

The value “Missing Restart Msg in the Spool table…” was the light at the end of the tunnel. I quickly ran the Terminator tool to clean the messagebox.

Once done, I ran the MBV analysis again and all critical warnings were gone in relation to “Control Messages”.

I then tried my test again and saw the messages were now linked to suspended orchestrations….

On resubmitting, I would see the message continue from where it left off…

Hope this helps someone having similar issues.

Posted in BizTalk 2006/2009, BizTalk 2010, General | Tagged: , , | Leave a Comment »

Tracing and Tracking ESB events

Posted by DipeshA on May 28, 2012

Many a times one may feel the need to trace ESB events when using itineraries. This will enable you to see how a message is getting processed by the ESB itinerary resolver and if something is going wrong there. The process of enabling this switch is quite simple and it involves the following:

Tracing

1) Open the BizTalk Configuration file, ie BTSNTSVC.exe.config

2) Add the following section (if one does not exist)  and save the file:

<system.diagnostics>

<sources>

<source name=”BizTalk ESB Toolkit 2.0″ />

</sources>

<switches>

<add name=”BizTalkESBToolkit20″ value=”4″ />

</switches>

<trace autoflush=”true” indentsize=”4″ >

<listeners >

<add name=”myListener”   type=”System.Diagnostics.EventLogTraceListener” initializeData=”BizTalk ESB Toolkit 2.0″ />

</listeners>

</trace>

</system.diagnostics>

Note: 
Add a Trace listener. If you don't already have a trace listener configured, add 1 of the many Trace listeners that come out of the box with the .Net framework: (Default, EventLog, TextWriter, Console, Text, etc.)
When using the EventLogTraceListener, the initializeData attribute must be set to the source of the Tracing Event. 
In this case it is the "BizTalk ESB Toolkit 2.0" source.

3) Restart the BizTalk Host Instance.

4) You will now see information and error events in the event viewer. Also if you have debugview running, you will see code traces there.

Tracking

After enabling tracing, you might still feel the need for tracking. That is, what went where? Every Itinerary Service has a property called ‘Tracking Enabled’ which you’ve got to set it to ‘True’ during the design phase. This sets the stage for tracking an Itinerary Service. Set this property for every single service in an Itinerary as this is false by default. Only those services whose ‘Tracking Enabled’ property is set to true will show up in the database.

Ok, tracking is set to true and my itinerary is deployed. Where do I see this tracing information?

When a service in an itinerary is set for tracking, it is recorded in the BAMPrimaryImport database in the table bam_ItineraryServiceActivity_Completed. the column itineraryBeginTime should be used to sort the results by datetime.

This table gives a snapshot view of the trajectory of the message and if each stage in its path was completed or pending.

Posted in BizTalk 2006/2009, ESB Toolkit, General | Tagged: , , , , | Leave a Comment »

“the binary code for the script is not found…”

Posted by DipeshA on February 7, 2012

When you deploy a BAM activity, it creates at least one SSIS package for the activity which will create partition tables and move any activity instances within the archive window to the BAMArchive database.  If you’ve created any BAM views which create an OLAP cube, an SSIS package will also be created to move the data between the relational tables and the cube as well.  These SSIS packages are stored on the SQL server, in the MSDB database instance on the default server instance.

So SSIS needs to be installed on the SQL Server not the BizTalk server.  But what does need to be installed on the BizTalk server? See below…

You need to install:
1) Client Tools SDK
2) Client Tools Backwards Compatibility (this is critical).
+ the management tools as shown above.

I recently hit this issue while trying to run the BAM_AN_ SSIS package in SQL Server 2008 in order to load the activity data to the cube and got “the binary code for the script is not found”. What this means is the SSIS packages created by the BM utility has not been compiled. If you try and open the resulting dtsx package in Visual Studio, you are likely to see a dialog indicating that the package is corrupt. Lastly I had to  undeploy the existing BAM view and redeploy and the error went away!

Below are the screens I saw before and after installing the missing components.

Before:

After:

Hope it helps someone!

Posted in BAM, BizTalk 2006/2009, BizTalk 2010, General | Leave a Comment »

More cloud based integration posts coming up

Posted by DipeshA on January 16, 2012

As we move towards the cloud, we need to be able to expose endpoints on the cloud for integration that follows a hybrid model (see my previous post that describes what a hybrid model is) . In the next few days, I will be writing posts that demonstrate how BizTalk can be used to talk to Azure service bus and other cloud based services.
Meanwhile, msdn has avery interesting article on this and can be found here.

 

 

Posted in Azure, BizTalk 2010, BizTalk 2010 R2, BizTalk Azure, General | Tagged: , , | Leave a Comment »

 
Follow

Get every new post delivered to your Inbox.