Navigation

Search

Categories

 
 

On this page

Unsupported Microsoft.BizTalk.Deployment.dll
OutOfMemoryException when you use maps
Unsupported Microsoft.BizTalk.Databases.dll

Archive

Blogroll

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

RSS 2.0 | Atom 1.0 | CDF

Send mail to the author(s) E-mail

Total Posts: 21
This Year: 0
This Month: 0
This Week: 0
Comments: 29

Sign In
Pick a theme:

 Thursday, February 16, 2006
Thursday, February 16, 2006 4:12:51 AM (GMT Standard Time, UTC+00:00) ( )

Microsoft.BizTalk.Deployment.dll is an unsupported assembly provided by Microsoft, it is used to perform all actions related with the deployment of EAI solutions in BizTalk Server 2006 Beta 2.  This assembly provides classes to import, export, add and remove resources, register and unregister assemblies in the gac, and so on....

Additionally, with Microsoft.BizTalk.Deployment.dll you can extract the artifacts contained inside a biztalk assembly (.dll) using its classes and interfaces.  For example, if you want to know if a file is a biztalk assembly you can use this code:

if (BizTalkLatamAssembly.BtsAssemblyManager.IsBizTalkAssemblyByPath(pathBtsAssembly))
{
// crate an instance of BizTalkAssembly
Microsoft.BizTalk.Deployment.BizTalkAssembly biztalkAssembly =
new Microsoft.BizTalk.Deployment.BizTalkAssembly();
biztalkAssembly.Load(pathBtsAssembly);
// create an instance of BtsAssemblyManager
Microsoft.BizTalk.Deployment.Assembly.BtsAssemblyManager btsAssemblyManager =
new Microsoft.BizTalk.Deployment.Assembly.BtsAssemblyManager(pathBtsAssembly, biztalkAssembly);
// load the BtsAssembly from BtsAssemblyManager
Microsoft.BizTalk.Deployment.Assembly.btsAssembly = btsAssemblyManager.BtsAssembly;
}

Also, you can get the pipelines from a biztalk assembly using BtsAssembly class and IBizTalkOrchestration interface, see below:

IEnumerator listOfPipelines = btsAssembly.AssemblyMetaData.Pipelines;
listOfPipelines.Reset();
while (listOfPipelines.MoveNext())
{
Microsoft.BizTalk.Deployment.MetaDataOM.IBizTalkPipeline pipeline = listOfPipelines.Current
as Microsoft.BizTalk.Deployment.MetaDataOM.IBizTalkPipeline;
System.Console.WriteLine("Pipeline name: " + pipeline.Name);
}

I wrote an easy sample called "BTS Easy Reflector" that uses the classes of Microsoft.BizTalk.Deployment.dll to show information about a biztalk assembly.  You can download it from "BTS Easy Reflector: Workspace home" and send me your feedback.

This information and project was developed with BizTalk Server 2006 Beta 2, thus, is possible that it doesn't work to final relase .

 Tuesday, February 14, 2006
Tuesday, February 14, 2006 4:10:21 AM (GMT Standard Time, UTC+00:00) ( )

If you get the System.OutOfMemoryException exception when you map large messages, may be you need to read this kb "The BizTalk service restart unexpectly when you map large message in BizTalk Server 2004".  It explains the cause and possible solutions to solve this problem.

For more information go to http://support.microsoft.com/kb/913959

 Friday, February 10, 2006
Friday, February 10, 2006 4:09:12 AM (GMT Standard Time, UTC+00:00) ( )

Microsoft.BizTalk.Databases.dll is an unsupported assembly in BizTalk Server framework.  It provides functionality to query the servers (SQL Server, Windows, Clusters, etc) and its database – if is a SQL Server - over the network.  To do it, this assembly exposes 5 classes: BizTalkDatabaseInfo, Database, DatabaseCollection, Server, y ServerCollection; and each class have its own properties and methods.

T
he use of these classes is very easy, in the following example I query the SQL Server that exists in my network using ServerCollection y Server.

foreach (string name in Microsoft.BizTalk.Databases.ServerCollection.GetSqlServerNames())
{
    Microsoft.BizTalk.Databases.Server server = new Microsoft.BizTalk.Databases.Server(name);
    System.Console.WriteLine("Server name: " + server.Name);
    System.Console.WriteLine("Platform Identifier: " + server.PlatformIdentifier.ToString());
    System.Console.WriteLine("Type: " + server.Type.ToString());
    System.Console.WriteLine("Version: " + server.Version.ToString());
}

Or, to query the databases in each SQL Server you can use the code that I show below.  In the example, I query each database in SQL Server and I ask if the database is a BizTalk Database:

Microsoft.BizTalk.Databases.Server server = new Microsoft.BizTalk.Databases.Server("server_name");
bool isBtsDb = true;
foreach (Microsoft.BizTalk.Databases.Database database in server.GetDatabaseCollection())
{
    System.Console.WriteLine("Database: " + database.Name);
    try
    {
        isBtsDb = database.IsBizTalkDatabase;
        if ( isBtsDb ) 
            System.Console.WriteLine("///// Begin - BizTalk Database ");
    }
    catch
    {
        isBtsDb = false;
    }
    System.Console.WriteLine("Is BizTalk database: " + isBtsDb.ToString());
    if (isBtsDb)
    {
        System.Console.WriteLine("BizTalk Db name: " + database.BizTalkDatabaseInfo.Name);
        System.Console.WriteLine("BizTalk Db version: " + database.BizTalkDatabaseInfo.Version.ToString());
        System.Console.WriteLine("BizTalk Db description: " + database.BizTalkDatabaseInfo.Description);
        System.Console.WriteLine("///// End - BizTalk Database ");
    }
}

The last functionality doesn’t work in Database class because when I ask if a database is a BizTalk Database using IsBizTalkDatabase property, Database class only checks for BizTalk Management DB and ignore another database.

Unfortunately, by this reason, you cannot use this property… I hope that Microsoft people can resolve this “issue” in the next version; it’ll be a great help.