Welcome to MSDN Blogs Sign in | Join | Help

Virtualisation Support Wizard now available

Microsoft's Virtualisation Support Policy Team has been working for months on development and testing so that they can clearly define, not surprisingly, virtualisation support policies. The result is the Virtualisation Support Wizard which you can use to see if your virtualisation configuration is supported without needing to call the great people at Microsoft support.

Virtualisation Support Wizard

Virtualisation Troubleshooting and Support TechCenter on TechNet 

The observant will notice that BizTalk Server 2009 isn't on the list yet - I've raised this omission as the product was finalised back in April.

[[Edited July 2nd 2009]]

The Virtualisation guys have told me that the product was missing because BizTalk Server 2009 is not referenced in:

957006 Microsoft server software and supported virtualization environments

so I've submitted a Change Request to get the KnowledgeBase article updated too.

The following article, though, is already up-to-date:

842301 Microsoft BizTalk Server supportability on a virtual machine

Posted by JohnBrea | 0 Comments
Filed under:

Host Integration Server and Biztalk licensing explained

The newsgroups can be an excellent source of information, especially when someone replying to a question goes far beyond where they could have finished. Take the following question posted today on microsoft.public.hiserver.general:

Dave wrote: "I am just returning to the HIS world after being out of it for 5 or so years. It seems over that period of time MS has blurred the line between HIS and Biztalk or am I missing something? On that same note, where or what is the best way to learn the "enterprise" view of each server?"

to which an ex-Microsoftee (Andrew McLaren) responded at length:

Hi Dave, Yes, Microsoft's product strategy here is both confused and confusing (I no longer work for Microsoft, so now I'm fairly free to say this publicly :-)

Viewed from the technical perspective, Host Integration Server and BizTalk Server remain two separate products. They have no interdependencies: you can install full HIS on a machine without needing any any BizTalk components at all. You can also install BTS on a machine without needing any HIS bits. Apart from BizTalk's "BizTalk Adapters for Host Systems" feature (aka "BAHS"), HIS and BizTalk do not share any management tools, common data stores, APIs etc. They are separate products.

Viewed from the Sales and Purchasing perspective, there is only ONE product: BizTalk Integration Server. Generally, you cannot buy a stand-alone copy of HIS; you must buy BizTalk Server. The BizTalk Server media contains a full, standalone copy of HIS, with its own Setup program, etc. If you only want HIS, you buy a copy of BizTalk, install HIS from the BizTalk media, using the HIS Setup program, and then throw the rest of the stuff on the DVD away. Or you can also install and use the BizTalk bits, if that's what you want.

A full copy of HIS is included with every edition of BizTalk Server. So if you only want an HIS Licence and not the the BizTalk bits, you can buy (for example) a copy of BizTalk Server Branch Edition, and install HIS from that. A BTS Branch Edition Licence is cheaper than the old stand-alone HIS Enterprise Edition Licence, so this actually works out to be a money-saving bargain - possibly the one good thing to come from all the confusion.

The vast majority of HIS servers out there are running stand-alone, with no BizTalk involvement; BizTalk is a fine product, but HIS has been around much longer and covers a much wider range of scenarios. So BizTalk is not always required.

If you have a scenario where you do want to actually use HIS and BizTalk together, as part of the same solution - for example, reading and writing data from BizTalk to CICS or DB2, etc - then you can also use the BizTalk Adaptors for Host Systems. These are installed *as part* of BizTalk Server, from the BizTalk setup program; and they neatly integrate the BizTalk bits with the HIS bits. You could get almost the same result by installing HIS and BizTalk separately onto the same machine; but BAHS adds the necessary glue to make it work straight out of the box (which is actually pretty cool, if that's what you want).

There's some more detailed info on licensing and products features, here:

http://www.microsoft.com/biztalk/en/us/host-integration.aspx

There are also links to further technical info and training on the same page.

Well, I hope that this has helped to explain the current situation, and not make it even more confusing! :-)

If you have follow-up questions, or other technical questions about HIS, just reply back to this group.

Regards
Andrew McLaren

I think it is a well-written overview of how the two products are being marketed and Andrew kindly let me reprint it. Best of luck in the outside world, Andrew.

For more information, there is a license document available for download:

How to License Microsoft BizTalk Host Integration Technologies

 

Changing the size of the MSMQLOG.BIN logging file in MSMQ

As you may know, MSMQ has internal error logging enabled by default and outputs to a file called MSMQLOG.BIN in the %windir%\debug directory.

The file, as the extension hints at, is in a binary format (unlike MSMQ 2.0) and so cannot be read by simply opening it in Notepad. Instead the file has to be sent to Microsoft support services to be formatted and analysed. Due to the nature of the content (internal function references, etc.), you may not get to see the text output.

The logging can be enabled or disabled using the MQTRACE script which you can download from my blog. This allows some basic control, such as being able to raise the default logging level from "Error" (just logging errors) to "Information" (logging everything).

For example, to enable Information level logging you would carry out the following steps:

  1. MQTRACE -STOP
  2. MQTRACE -START -INFO

and when you have finished:

  1. MQTRACE -STOP
  2. MQTRACE -START

to set logging back to the default.

Note that the size of the MSMQLOG.BIN file is limited to 4MB. Once the file is full, it starts to overwrite itself in a circular fashion (when full, writing from the end, back to the start and on through the file again). This isn't too much of a problem when you are logging just errors but full logging can fill the file pretty quickly. This can result in the information you want to capture being lost before you have time to disable logging.

MQTRACE uses a program called LOGMAN.EXE to set the way MSMQ performs logging. This program has a lot of options you can pass it as parameters but we only need a few. For example, to set a 50MB log file:

logman create trace msmq -max 50 –f bincirc -o C:\WINDOWS\Debug\msmqlog.bin –ets 

which can be explained as follows:

  • Create Trace (this is the Verb used to create a tracing collection, rather than one for counters)
  • MSMQ (name of the collection)
  • -Max 50 (maximum log file size in megabytes)
  • -f bincirc (the log format; bincirc means circular binary file, as explained above)
  • -o {path} (location of the file to contain the logging)
  • -ets (send commands to Event Trace Sessions)

You should see the following output if the changes were successful:

C:\temp>logman create trace msmq -max 50 -f bincirc -o C:\WINDOWS\Debug\msmqlog.bin -ets

Name:                      MSMQ
Age Limit:                 15
Buffer Size:               8
Buffers Written:           1
Clock Type:                System
Events Lost:               0
Flush Timer:               0
Buffers Free:              2
Buffers Lost:              0
File Mode:                 Circular
File Name:                 C:\WINDOWS\Debug\msmqlog.bin
Logger Id:                 3
Logger Thread Id:          2780
Maximum Buffers:           25
Maximum File Size:         50
Minimum Buffers:           3
Number of buffers:         3
Real Time Buffers Lost:    0
 

 

As I mentioned, though, MQTRACE.CMD uses LOGMAN so as soon as you run the script, any changes you made manually at the command prompt will have been overvritten. If we look in the script using Notepad, we find the (most important) LOGMAN command is:

logman %tracecommand% %log_session_name% %mqRealTime% -pf %msmqtracecfgfile%  %tracefilepathcommand% %tracefilemodeoptions% -ets

which makes use of memory variables defined elsewhere in the file.

Near the beginning of the script, you will find: 

set mqBinaryLog=%windir%\debug\msmqlog.bin
set mqTextLog=%windir%\debug\msmqlog.txt
set log_session_name=msmq
set msmqtracecfgfile=%windir%\debug\msmqtrc.ini
set msmqtracesessionlog=%windir%\debug\msmqtrc.log
set loggingrunning=
set mqRealTime=
set tracecommand=start
set tracefilemodeoptions=-f bincirc -max 4
set tracefilepathcommand=-o %mqBinaryLog%
set IsWinXP=0
set TmpVerFile=%tmp%\osver.txt

The final LOGMAN command generated this way is pretty similar to the one I detailed above. You may want to edit MQTRACE.CMD and set the variables directly so you can, for example, set the "-max" parameter to 50.

Notes

  • check you have a recent version of Logman.exe. If you run "Logman /?" at the command prompt and the on-line help doesn't have an "-ets" option then you want to find a newer build.
  • if the reports shows something like "{some path}\msmq.etl" for File Name instead of what you typed in then check the path is valid.
  • if the changes don't get applied, you may need to run "Logman delete msmq" to remove an existing collection before trying again.
Posted by JohnBrea | 0 Comments
Filed under: ,

MSMQ Management Pack: Subscript Out of Range

A post today on [ Teknoglot ] reports that the MSMQ Management Pack may return "Subscript Out of Range" when trying to discover public queues on servers that don't have any.

I'll see if I can repro this and raise a bug with the product group.

Posted by JohnBrea | 0 Comments
Filed under: , ,

MSMQ 3.0 Management Pack updated

Browsing the Internet, I found the [ Teknoglot ] blog which mentions that the MSMQ 3.0 Management Pack has been updated.

No details in the guide with the update as to what has been changed but probably worth downloading the latest build (24 April 2009, v6.0.6587.0).

Posted by JohnBrea | 0 Comments
Filed under: ,

Error 0x42c when you try to install MSMQ

When you try to install MSMQ, you may encounter this sort of error message:

Error Code: 0x42C Error Description: The dependency service or group failed to start.

On the face of it, this should just be a case of checking the usual suspects that the MSMQ service is defined as depending on in the service properties. Here's the list of dependencies from my various test machines:

Windows XP

  • Distributed Transaction Coordinator
  • Message Queuing access control
  • NT LM Security Support Provider
  • Reliable Multicast Protocol Driver
  • Remote Procedure Call (RPC)
  • Security Accounts Manager

Windows 2003 server

  • Message Queuing access control
  • NT LM Security Support Provider
  • Remote Procedure Call (RPC)
  • RMCAST (Pgm) Protocol Driver
  • Security Accounts Manager

Windows Vista

  • Message Queuing access control
  • Remote Procedure Call (RPC)
  • Windows Event Log

Checking that these are running isn't as easy as it seems as they don't all appear in the Services snap-in. In the dependencies list, system components will have either a cog or PC graphic. Only those with a cog will appear in the Services snap-in. Luckily, the ones that don't (Message Queuing access control and Reliable Multicast/RMCAST) are the ones you are trying to install anyway.

Note - if you get the 0X42c error in the event logs when trying to start MSMQ at a later date, you can use "NET START" to force these components to run (or at least generate an error):

  • Message Queuing access control - NET START MQAC
  • RMCAST (Pgm) Protocol Driver - NET START RMCAST

If you find the components are all running correctly then it is probably the Distributed Transaction Coordinator (DTC) that is causing the problem. MSMQ does expect this service to be available and will try to launch DTC if it is not already running. You will notice that the operating systems after Windows XP do not have a dependency on DTC for MSMQ. The change is because of problems this would create on a cluster. In that environment, MSMQ and DTC do not usually share the same resource group so it would not be unusual for the 'DTC' group to fail over without the 'MSMQ' group doing likewise. If there was a explicit dependency then MSMQ would be restarted by the service control manager whenever DTC failed. This is regarded as too disruptive so the dependency is instead an implicit one.

Note - Windows Vista cannot be clustered but the change has been maintained across the newer operating systems for consistency.

So the next step is to troubleshoot the DTC service. Usually there will be an event log entry from MSDTC explaining what the problem may be, such as described in:

You may receive error code -1073737712 when you try to start the Distributed Transaction Coordinator service in Windows XP or in Windows Server 2003

where the root cause is either a corrupt/missing MSDTC log file or a permissions issue.

Installation problems, like ogres and onions, have layers. Keep removing the layers until you find what's really causing the problem.

Posted by JohnBrea | 0 Comments

Watching MSMQ from the TweetDeck

I know the Twitter.com web page isn't too bad but I've now downloaded TweetDeck so I don't need to have multiple IE windows open. The default grey/black/white colour scheme looks stylish so I don't think I'll touch that. Pride of place is the Search: MSMQ pane where I can watch what the world is Tweeting about Microsoft Message Queuing. Much easier than trawling through all the various forums for conversations.

Posted by JohnBrea | 0 Comments
Filed under: ,

What's this I'm hearing about Windows Azure Queues?

It used to be so simple years ago. If you were a Microsoft 'shop' then you used MSMQ and, if not, you ran IBM's MQSeries. Now everyone and their dog seems to have a messaging product, especially out in the "Cloud". Who would have thought Amazon - purveyor of books and CDs to the world - would be involved in selling web services such as Amazon Simple Queue Service (Amazon SQS)?

Microsoft's move into this sector is with Windows Azure Queues, part of the Windows Azure Services Platform.

There's a white paper to introduce you to the concepts involved:

Windows Azure Queue - Programming Queue Storage
Windows Azure Storage provides durable, scalable, available, secure, and performance-efficient storage services for the cloud, and it does this through familiar and easy-to-use programming interfaces. Windows Azure Queue provides reliable storage and delivery of messages for an application. This paper describes the Windows Azure Queue programming interface and the advanced queue concepts.

I've had a browse through the paper and I think developing for Azure Queues should not be a challenge to anyone with experience of MSMQ. I'll see if I can put some comparisons together between MSMQ and Azure Queues although you may have to wait instead for the official whitepapers from the MSMQ product group.

Anyone interested in trying out the Azure services will need to register and then be prepared to wait:

"NOTE: Due to high demand and the early Community Technology Preview (CTP) state of these services, you may be temporarily placed on a waiting list."

Failing that, you can get a flavour of Windows Azure with the "How Do I?" webcasts available, such as:

which has various video, audio and code downloads in addition to the Silverlight screencast that you can watch in situ.

Posted by JohnBrea | 0 Comments
Filed under: ,

"Can I write a script to create a queue in MSMQ and set the permissions on it?"

The first part is easy enough but the second is tricky.

For example, here's how to create a public queue with 'Old School' VBScript:

set iq=CreateObject("MSMQ.MSMQQueueInfo")

iq.PathName=”machine\queue”

iq.Label=”The queue”

iq.Create (IsTransactional=0)

 

There's no way to add permissions to this queue at the same time as the COM/scripting API doesn't have that functionality.

System.Messaging (.Net) and the native C/C++ API expose functions for queue security, such as MQSetQueueSecurity(), but they can't be using in VBScript.

The way forward may be PowerShell as that uses the .Net Framework.

I'll add writing such a script to my ever-growing 'cool things to do' list...

Posted by JohnBrea | 0 Comments
Filed under: , ,

MSMQ and the Active Directory Recycle Bin in Windows Server 2008 R2

Interesting post on the Motley Queüe blog from April about the new Active Directory Recycle Bin feature introduced in Windows 2008 R2.

Discusses what you can (or cannot) do when you have lost Active Directory objects, such as MSMQ Public Queues, either through accidental deletion or uninstallation.

Remember that MSMQ's objects in AD have unique GUIDs so manually recreating them won't always get you back to where you started.

Reference materials

TechNet Articles:

TechNet Blogs:

Posted by JohnBrea | 0 Comments
Filed under: ,

Service Pack 2 released for Windows Vista and Windows Server 2008

Yes, I know it's a bit late but I didn't realise it had been Released To Web until Windows Update prompted me to install it today.

From The Windows Blog:

"Consumers with Windows Vista SP1 can visit the Microsoft Download Center or use Windows Update (WU) to install SP2, but my suggestion is to turn on Automatic Update (AU) and sometime during the coming months your computer will download and install SP2. Similar to previous releases, SP2 delivery over Automatic Update is a “throttled release” which will begin in June."

I can't find any references to changes for MSMQ but that's not too surprising - as mentioned back in April, there have been no post-SP1 hotfixes released that would be packaged up in SP2.

MSMQ won't install on Windows 2008 with a Fatal Error (0x80070643)

One of my colleagues in support has ventured under the MSMQ spotlight with a post about a permissions/UAC problem preventing installation on Windows 2008:

MSMQ installation on Windows 2008 fails with error "Attempt to install Message Queuing Server failed with error code 0x80070643. Fatal error during installation”

If you do bump into this problem then the workaround should get you up and running again.

Note: there is still going to be an underlying issue with the security on the machine which the workaround is getting you past. Therefore it would be a good idea to review any changes that have been made to the default permissions on the various directories. For example, has a policy been rolled out that is supposed to tighten up security by removing or limited accounts on the root or Windows directories? Microsoft does take security seriously and every Access Control List has been reviewed a number of times before being signed off into the final product. So if you see some default setting that looks insecure this probably isn't the case and changing it - unless documented as something to do - is likely to break things.

Posted by JohnBrea | 0 Comments
Filed under: ,

Join the Tweeting MSMQ community

You too can try to generate useful answers to questions about MSMQ in 140 characters!

 

Posted by JohnBrea | 2 Comments
Filed under: ,

GeekProject - MSMQ Studio

Just noticed this 3rd party project:

MSMQ Studio

The author, Kjell-Åke Andersson, describes it as follows:

"This tool allows you to manages MSMQ queues on local and remote computers.
Send and recieve messages just like you were using Outlook."

I haven't tried it out myself but may be of interest to you.

Posted by JohnBrea | 0 Comments
Filed under: ,

"I restarted MSMQ and all my messages have vanished!"

This is one of those horrible surprises - the system has been working fine for months; someone needs to restart the machine; everything disappears! Developers notice that Transactional messages never disappear so it must be a problem with Non-Transactional messages...

The explanation is simple - the developer of the application wrote code to just create and send a message. The defaults mean you end up with Express messages which only exist in RAM and are not persisted to the disk, so cannot survive a restart. To be persisted, the Recoverable option must be selected when the message is created. Transactional messages, by design, automatically flip the Recoverable bit which is why they never disappear after a restart.

Here's a simple table of the choices available:

 

Non-Transactional

Transactional

Express (Non-Recoverable)

Yes

No

Recoverable

Yes

Yes

Express messages are also know as "fire-and-forget". It doesn't matter if they get lost as their value it low or they are easily replaced. A good example of something that may use them is a stock ticker - it doesn't matter if one message gets lost as an updated stock price on the next message wil be along soon to replace it.

 

Here is a C# example from “Reliable Messaging with MSMQ and .NET” for setting the Recoverable property: 

Message recoverableMessage = new Message();
recoverableMessage.Body = "Sample Recoverable Message";
recoverableMessage.Recoverable = true;
MessageQueue msgQ = new MessageQueue(@".\$private\Orders");
msgQ.Send(recoverableMessage);

Posted by JohnBrea | 2 Comments
Filed under: ,
More Posts Next page »
 
Page view tracker