What is BizTalk MsgBoxViewer (aka "MBV") ?
As the name imply, MBV analyze in details your BizTalk 2004, 2006 or 2009 MsgBox Db but also other BizTalk Dbs and generates an HTML file containing different REPORTS including a "WARNINGS REPORT" which report in yellow and red some warnings.
As you can imagine, red warning are considered as critical. All these warnings are based on my own experience as a BizTalk Support Escalation engineer but also of course on some "official" recommendations/supportability for BizTalk Databases and known issues around BizTalk.
This tool can analyze all types and versions of BizTalk 2004, 2006, 2006 R2 or 2009 configurations.
Let me enter now in details of MBV :
MBV is provided as two executables : a Console and a Gui application.
These two versions share a commong engine in C# reading only in the BizTalk Dbs and Servers registry to retrieve useful lists of infos.
Gui tool also display in some lists the HEADER REPORT and the SUMMARY REPORT.
Prefer to execute these tools on a BizTalk Server to get automatically Mgmt db location/name and BTS version info, but you can also start them on any type of server (SQL Servers, XP/VISTA clients,...)
IMPORTANT !! : Do not start them from a network share otherwise you will get some Security exceptions
Output Files :
Both tools generate by default 3 files:
- an HTML file which contain all reports. => This is the first file to open to see well formated result of the health check.
- an History log file which contain in TXT format the history of all reports. (you can purge it inside the GUI Tool).
- a Status log file which contain a detailed status of each query execution and possibly errors met (you can purge it inside the GUI Tool). This status log file is important to read if some errors were met during the collect process. It displays the start time of each query.
=> You have an option in both Gui and Console versions to generate also an XML file.
If you select this option, the tool will generate a XML file in the same output folder than the HTML containg its schema and all reports details. You can so build any parsing tool you want to analyze the collect output or build you own XLS sheet to present the result in format you prefer.
Both HTML/XML and History Log files generate 6 important type of Reports :
HEADER REPORT:
This report is the first one to appear an list the options selected in MBV, the target Mgmt Db location and BizTalk Version.
WARNINGS REPORT:
This report is the first one to focus on !
It reports all warnings found in the BizTalk MsgBox or DTA Db and will flag them in yellow or red depending of their severity.
Lot of entries in this report have also a link to a corresponding Query Report (see below for more info on that) and HTML link(s) to a corresponding MSDN document(s) or MS KB article(s).
=> ALL red warnings are usually critical to solve for a good health of BizTalk dbs !
SUMMARY REPORT:
It reports a summary of useful info like hosts configured, running hosts instances, running tracking hosts, ports disabled or stopped/largest, number of msg in suspend Queues and work Q, and many other ones !...
Lot of entries in this report have also a link to a corresponding Query Report (see below for more info on that) and HTML link(s) to a corresponding MSDN document(s) or MS KB article(s).
TOPOLOGY REPORT:
This report show you quickly the topology of the BizTalk group with type of ports/host/db hosted on each server.
This report contains indeed a per server sub-report (BizTalk or SQL Server) and sub-report contains main items hosted in the corresponding Server : Dbs+Jobs for a SQL one, Configured Hosts+Running Hosts+adapters used+Ports+orch for a Biztalk one).
If you select in the GUI tool the optional queries (or /ALL in the Console version), it will complete each server list with more info : Server Date/time, Server CPU info, Server CPU Usage, Mem Usage, CPU and Mem of running host instances, CPU and Mem of running SQLserv.exe, DTC and TCP settings, and much more...
QUERY REPORTS:
This section list all the generated query reports ordered by query category and based on the query you decided to execute.
All these query reports are expandable/collapsible
you will see inside the list of Hotfix installed, Hosts, Host instances, ports, pipelines, orchestrations deployed, and much more...
Title of queries which were not selected to be executed will appear as disabled in the HTML so you can see very quickly which query was selected to be executed.
MSG FLOW REPORT:
If the optional Query "Message Flow" is selected in the optional queries list, this report will try to display msg flows it can identify based on the Activation subscriptions, ports and orchestrations found.This report can not make an exaustive list of msg flows but it should be able to display the main ones.
A msg flow should be read from left to right and they are ordered by Receive port
By default the console and GUI tool will execute lot of queries but not all of them, so you can select in the GUI tool additional optional queries to execute.
Gui tool provide you a button to Select or Unselect ALL queries in each category and you have the "/ALL" option in the Console version to execute ALL Queries of ALL categories.
GUI tool has also an option to start periodically a collection (enabled immediately when you check the "Collect Each" checkbox)
You have also an option in both Gui and Console versions to generate an XML file (see above for more details on this XM file).
Recommendations:
I would recommend in general to try the first collect with the default queries selected.
Even if you have some errors like Access Denied, they will appear in the html file and the status & errors file but they won't prevent the collections to stop. Doing that allow you to get the max info the tool can try to have, including the NON-SQL queries which are the last ones in the optional queries list; these last NON-SQL queries use WMI or remote REGISTRY access to get some perf counters or get some registry settings.
These NON-SQL queries can require some special user rights in additional to the BizTalk admin one because they can target all servers belonging to the checked BTS group and not only the Biztalk DBs ones on only SQL Servers.
So sometimes BTS admin user right is not enough but once again, if you have access denied errors with the NON-SQL queries, it is not critical because you should have already lot of info collected and lot of rules evaluated.
Furthermore the TOPOLOGY REPORT is populated with additional info from these NON-SQL queries (CPU type, CPU usage, mem, running BTSNTSVC.EXE pids, SQLSERV.EXE pid, etc…) and some additional warning can be raised also based on these NON-SQL queries, like the throttling ones : In Biztalk 2006, except a biztalk trace (and maybe eventlog, not sure ! ) only perf counters can show you if you have throttling, so if you don’t select the query “BTS perf counters” in the tool, you will not have this rule evaluated and no possibility to have the corresponding warning.
If you notice really lot of problems when ALL options are selected, well, just unselect them and make a collect with the base queries :-).
Finally, each time you collect the output files, please do not forget to collect also the status/errors file, it can allow me to analyze them if you have to report me some problems & errors and I can try quickly to determine the root cause.
- You want a sample of generated report HTML file ? just download one below generated on my BizTalk test machine. This one is simple of course and consist of just one Server hosting both BizTalk Server and SQL Server but it will you a good preview :
https://blogs.technet.com/jpierauc/attachment/2662771.ashx
- Click here to access to a complete MBV Q&A:
https://blogs.technet.com/jpierauc/archive/2008/07/22/msgboxviewer-mbv-q-a.aspx
I hope so you will find useful this tool and feel free please to share your feedbacks & suggestions via this blog, or ask any questions regarding MBV usage or output
Thanks !
JP
MsgBoxViewer9_23__07_05_2008__15_38_31.html
Comments
Anonymous
January 01, 2003
Hi Dilip, thanks for your comment ! MBV code is not public as it contains some internal SQL queries and comments... However, as I say in my Q&A, some of the MBV queries come directly from former BizTalk architecture Lee Graber in its "avanced Msgbox Queries http://home.comcast.net/~sdwoodgate/BizTalkServer2004AdvancedMessageBoxQueries.doc? I just modified them to be able to target multiple msgboxes configurations or use them with any names specified for the BizTall dbs. Then I collected all other interesting SQL queries that our BizTalk Product Group had send to us since few years to help troubleshooting BizTalk production issues on large BizTalk dbs For performance issues and to avoid any contention on very busy and large msgboxes db, we do NOT recommend to send SQL queries direcly to BizTalk dbs, specially the MsgBodx db. BizTalk MMC, HAT, or Biztalk WMI provider are provided for that and they do that quite well their role using optimized and tested queries. Remember that we have lot of publishing SQL queries + each 500 ms max (by default) lot of dequeue queries + subscription evaluation queries + several SQL jobs running each minutes or even for one of them looping each 10Seconds to clean unreferenced msgs in the System, so we need to avoid sending costly queries which could bring to locks/deadlocks or orphaned SPIDs situations. I have also classic WMI queries in MBV but mainly to get System info. I'm not aware of public docs describing in details each Biztalk msgbox tables (even if I think we have some articles on MSDN presenting some tables), but for some good in depth technical discussions on BizTalk and its databases, I can recommend you the BizTalk Core Engine's WebLog link : http://blogs.msdn.com/Biztalk_Core_Engine/ and this one on perfs : http://blogs.msdn.com/biztalkperformance/default.aspx and Biztalk PG blog hope it can help JPAnonymous
July 25, 2008
HI , Great Job Done . i was developing the same application for biztalk to get all the information stored in the Biztalk DB but was lacking some where because of the understanding of the tables in database. can u please gimme the code snippet of it . If possible than please tell me where i can read about the Biztalk Database relationships. Thanks . waiting for your response dilipsingh_20032003@yahoo.com ThanksAnonymous
January 21, 2009
Great tool How would you rectify the following Control Message Check Missing Restart Msg in Spool table (can prevent some svc instances to be resumed, terminated or suspended) !!Anonymous
January 21, 2009
Found answer here: http://blogs.technet.com/jpierauc/archive/2008/07/22/msgboxviewer-mbv-q-a.aspx