<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Ewan Fairweather</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/ewanf/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/ewanf/feed.xml</link>
    <description>BizTalk Ranger, Microsoft Redmond</description>
    <lastBuildDate>Tue, 16 Apr 2019 05:07:04 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>After installing Visual Studio 2010 Get Could not create SSOSQL. To fix the problem, reinstall SSO or try 'regasm SSOSQL.dll' from a Visual Studio command prompt.</title>
      <link>https://docs.microsoft.com/archive/blogs/ewanf/after-installing-visual-studio-2010-get-could-not-create-ssosql-to-fix-the-problem-reinstall-sso-or-try-regasm-ssosql-dll-from-a-visual-studio-command-prompt</link>
      <pubDate>Sun, 21 Feb 2010 14:08:00 GMT</pubDate>
      <dc:creator><![CDATA[Ewan Fairweather (Azure CAT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ewanf/2010/02/21/after-installing-visual-studio-2010-get-could-not-create-ssosql-to-fix-the-problem-reinstall-sso-or-try-regasm-ssosql-dll-from-a-visual-studio-command-prompt/</guid>
      <description><![CDATA[I rebuilt my laptop recently with Windows 7 and installed AppFabric, .net4, VS 2010, etc.&nbsp;...]]></description>
      <content:encoded><![CDATA[<P>I rebuilt my laptop recently with Windows 7 and installed AppFabric, .net4, VS 2010, etc.&nbsp; </P>
<P>&nbsp;When I came to configure BIzTalk 2009 I got the error in the subject line because the SSOSQL assembly needed to be re-registered.&nbsp; </P>
<P>Follow the instructions here to get it to work&nbsp;<A href="https://tomas-simonavicius.blogspot.com/2010/02/sso-service-failed-to-start-after.html">https://tomas-simonavicius.blogspot.com/2010/02/sso-service-failed-to-start-after.html</A></P>]]></content:encoded>
    </item>
    <item>
      <title>Benchmark your BizTalk Server (Part 3)</title>
      <link>https://docs.microsoft.com/archive/blogs/ewanf/benchmark-your-biztalk-server-part-3</link>
      <pubDate>Tue, 12 Jan 2010 15:21:00 GMT</pubDate>
      <dc:creator><![CDATA[Ewan Fairweather (Azure CAT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ewanf/2010/01/12/benchmark-your-biztalk-server-part-3/</guid>
      <description><![CDATA[Previous Parts:
For more information: Benchmark your BizTalk Server (Part 1) How to install:...]]></description>
      <content:encoded><![CDATA[<p><strong>Previous Parts:</strong></p>
<p><strong>For more information:</strong> <br /><a href="https://blogical.se/blogs/mikael/archive/2009/11/26/benchmark-your-biztalk-server-part-1.aspx">Benchmark your BizTalk Server (Part 1)</a> <br /><strong>How to install:</strong> <br /><a href="https://blogical.se/blogs/mikael/archive/2009/11/26/benchmark-your-biztalk-server-part-2.aspx">Benchmark your BizTalk Server (Part 2)</a></p>
<h4>Drill Down on BizTalk Baseline Wizard</h4>
<p>Now that you understand what the tools is let&rsquo;s look at how it can be used in a realistic situation. The tool provides a simple Orchestration and a messaging scenario which you can use to test your BizTalk Server deployment. In this post I am going to walk through</p>
<p>&middot; Running the tool against a default BizTalk environment e.g. BizTalk and SQL Server have been installed on an operating system with the default configuration</p>
<p>&middot; Demonstrate the techniques I use here in our Redmond Performance labs to analyze and determine the bottleneck in a BizTalk Server solution. This will include looking at perfmon counters and SQL Dynamic Management Views</p>
<h5>Scenarios</h5>
<p>To refresh here are the scenarios:<strong>Scenario 1: Messaging</strong></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/WCF%20Messaging%20Scenario_4.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/WCF%20Messaging%20Scenario_4.png"><img style="display: inline; border-width: 0px;" title="WCF Messaging Scenario" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/WCF%20Messaging%20Scenario_thumb_1.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/WCF%20Messaging%20Scenario_thumb_1.png" alt="WCF Messaging Scenario" width="510" height="95" border="0" /></a></p>
<ol>
<li>Loadgen generates a new XML message and sends it over NetTCP</li>
<li>A WCF-NetTCP Receive Location receives a the xml document from Loadgen.</li>
<li>The PassThruReceive pipeline performs no processing and the message is published by the EPM to the MessageBox.</li>
<li>The WCF One-Way Send Port, which is the only subscriber to the message, retrieves the message from the MessageBox</li>
<li>The PassThruTransmit pipeline provides no additional processing</li>
<li>The message is delivered to the back end WCF service by the WCF NetTCP adapter</li>
</ol>
<p><strong>Scenario 2: Orchestration</strong></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/WCF%20Orchestration%20Scenario_2.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/WCF%20Orchestration%20Scenario_2.png"><img style="display: inline; border-width: 0px;" title="WCF Orchestration Scenario" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/WCF%20Orchestration%20Scenario_thumb.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/WCF%20Orchestration%20Scenario_thumb.png" alt="WCF Orchestration Scenario" width="508" height="151" border="0" /></a></p>
<ol>
<li>Loadgen generates a new XML message and sends it over NetTCP</li>
<li>A WCF-NetTCP Receive Location receives a the xml document from Loadgen.</li>
<li>The XMLReceive pipeline performs no processing and the message is published by the EPM to the MessageBox.</li>
<li>The message is delivered to a simple Orchestration which consists of a receive location and a send port</li>
<li>The WCF One-Way Send Port, which is the only subscriber to the Orchestration message, retrieves the message from the MessageBox</li>
<li>The PassThruTransmit pipeline provides no additional processing</li>
<li>The message is delivered to the back end WCF service by the WCF NetTCP adapter</li>
</ol>
<h5>My Deployment</h5>
<p>The tests for this blog post were done on the kit below. A EMC Clarion CX-960 storage array with 240 disk drives was used as our back end storage. We used a single SQL Server with 16 logical processors (cores) and 64 GB of memory. I was fortunate enough to have access to four Dell R805 machines which are Dual Processor Quad Core with 32 GB RAM. Two of these were used for BizTalk, one to generate load and one to host the simple back end WCF service. Please note the specification of the hardware used here for the load generator servers and WCF service box is many times greater than is actually required, they were simply what was available for us in the lab at the time.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Deployment_4.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Deployment_4.png"><img style="display: inline; border-width: 0px;" title="Deployment" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Deployment_thumb_1.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Deployment_thumb_1.png" alt="Deployment" width="514" height="378" border="0" /></a></p>
<p>BizTalk Server 2009 and SQL Server were installed with their default configuration with the following exceptions:</p>
<p>1) TempDB log and data file were moved to a dedicated 4+4 RAID 10 LUN</p>
<p>2) The default data file location in the SQL setup was configured to be a dedicated 8+8 RAID 10 LUN</p>
<p>3) The default log file location for the SQL instance was configured to be a dedicated 8+8 RAID 10 LUN</p>
<p>4) For simplicity sake the recovery model for the BizTalk databases was set to simple. Because we do not use bulk logged operations the level of logging is still the same we avoid having to perform clean up of the log after every testing run. This should not be done in a production environment</p>
<p>5) The BizTalk MessageBox data and log files were set to a size of 5GB and</p>
<p><strong>Running The Test &ndash; Messaging Scenario</strong></p>
<p>We installed the tool, see <a href="https://blogical.se/blogs/mikael/archive/2009/11/26/benchmark-your-biztalk-server-part-2.aspx">https://blogical.se/blogs/mikael/archive/2009/11/26/benchmark-your-biztalk-server-part-2.aspx</a> for detailed instructions. The tool was installed on two servers so that I could run the load client on one server and the WCF service on another, it is of course possible to run both on the same.</p>
<p>As shown in the table below the results that we got from the first run were 789 messages/sec across a ten minute test.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="88">
<p><strong>Change</strong></p>
</td>
<td valign="top" width="137">
<p><strong>Configuration</strong></p>
</td>
<td valign="top" width="83">
<p><strong>Avg Processor Time (BTS Receive)</strong></p>
</td>
<td valign="top" width="83">
<p><strong>Avg Processor (BTS Send)</strong></p>
</td>
<td valign="top" width="83">
<p><strong>SQL Processor </strong></p>
</td>
<td valign="top" width="82">
<p><strong>Received Msgs/sec</strong></p>
</td>
<td valign="top" width="81">
<p><strong>Send msgs/sec</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="88">
<p>Default BizTalk and SQL Configuration</p>
</td>
<td valign="top" width="137">
<p>2 BizTalk (8 cores each), 1 SQL 16 CPU</p>
</td>
<td valign="top" width="83">
<p>50</p>
</td>
<td valign="top" width="83">
<p>53</p>
</td>
<td valign="top" width="83">
<p>62</p>
</td>
<td valign="top" width="82">
<p>789</p>
</td>
<td valign="top" width="81">
<p>789</p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>The first thing that I examine to determine whether a BizTalk environment is properly configured and balanced is the receive and send rate for this use case should be approximately equal throughout the test. This is measured using the BizTalk:Messaging\Documents Processed/Sec performance counter for the send side and BizTalk:Messaging\Documents received/sec performance counter for the receive side. This perfmon screenshot shows a subsection of the tests I ran. As you can see from the graphic below in my test they were approximately equal throughout.</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Perfmon%20Docs%20Received%20and%20Processed%20Per%20Second%20Steady%20Load_2.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Perfmon%20Docs%20Received%20and%20Processed%20Per%20Second%20Steady%20Load_2.png"><img style="display: inline; border-width: 0px;" title="Perfmon Docs Received and Processed Per Second Steady Load" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Perfmon%20Docs%20Received%20and%20Processed%20Per%20Second%20Steady%20Load_thumb.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Perfmon%20Docs%20Received%20and%20Processed%20Per%20Second%20Steady%20Load_thumb.png" alt="Perfmon Docs Received and Processed Per Second Steady Load" width="522" height="388" border="0" /></a></p>
<p>Typically the next step that I take is to examine the Message Delivery (outbound) and Message Publishing throttling (inbound) counters for all my BizTalk host instances. These can be found under the &ldquo;BizTalk:Message Agent&rdquo; perfmon object, there is an instance of each counter per host. Each BizTalk host can be in a number of different throttling states, the state shifts if throttling thresholds such as database size, inbalance between send and receive rates and numerous more are breached. The links below provide full information on this, to summarize a throttling state of 0 is good because this means that the engine is running at maximum speed. When looking at these counters it is important to check that throttling state duration, if the value of this for one host is small it indicates that either it was restarted or that throttling occurred.</p>
<p><a href="https://msdn.microsoft.com/en-us/library/aa559893(BTS.20).aspx">How BizTalk Server Implements Throttling</a><strong></strong></p>
<p>The screenshot below shows the rate counters (Documents Processed and Received per second) for my hosts as well as the throttling state and duration for each of the hosts. The BBW_RxHost throttling state duration is 550 compared to 9494 seconds for the BBW_TxHost. In this case it was because I restarted the receive host just before our test run started.</p>
<p>&nbsp;</p>
<p><strong><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Perfmon%20Docs%20Received%20and%20Processed%20Per%20Second%20Steady%20Load%20Report%20View_2.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Perfmon%20Docs%20Received%20and%20Processed%20Per%20Second%20Steady%20Load%20Report%20View_2.png"><img style="display: inline; border-width: 0px;" title="Perfmon Docs Received and Processed Per Second Steady Load Report View" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Perfmon%20Docs%20Received%20and%20Processed%20Per%20Second%20Steady%20Load%20Report%20View_thumb.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Perfmon%20Docs%20Received%20and%20Processed%20Per%20Second%20Steady%20Load%20Report%20View_thumb.png" alt="Perfmon Docs Received and Processed Per Second Steady Load Report View" width="504" height="375" border="0" /></a> </strong></p>
<p><strong>What was SQL Server Doing During This Time</strong></p>
<p>It is now important to examine the SQL Server tier and understand what is affecting performance here. A good starting point is to look at the following counters</p>
<p>&middot; Processor\% Processor Time</p>
<p>&middot; Memory\Available Mbytes</p>
<p>&middot; Logical Disk\Avg. Disk sec/Read</p>
<p>&middot; Logical Disk\Avg. Disk sec/Write</p>
<p>If the processor utilization is high then examine the privileged and user mode time, high privileged mode, which is typically defined as greater than 20%, can indicate that the box is I/O bound. ON a 64-bit SQL Server running with greater than 16 GB of RAM I would expect at least 500 Mbytes of RAM to be available. When examining the logical disk counters indicated it is important to look at each of the individual instances not just the total instance. For SAN LUNs if you are seeing response times less than 5 milliseconds for reads or writes you are very likely hitting the SAN cache.</p>
<p><strong>BizTalk Database and the Buffer Pool</strong></p>
<p>The primary purpose of the buffer pool (also known as the buffer cache) in SQL Server is to reduce intensive disk I/O for reading and writing pages. When an update is made to a page to reduce future read and write operations it remains in the buffer pool until the buffer manager needs the buffer area to read in more data. Modern 64 bit servers now regularly have 32 GB or more RAM available, because the size of most BizTalk MessageBox databases is just several GB in size, this means that the data pages for it can be kept in memory. The benefit of this is that under these conditions an insert or update to the MessageBox will only require a log write to physical disk, the data page will be modified in the Buffer Pool memory. The modified, known as a dirty page, will be written to disk by the checkpoint process during its next execution. This flushing of dirty pages to disk is done to minimize the amount of traffic that needs to be replayed from the transaction log in the event or an unexpected or unplanned server restart. For more information on the Buffer Pool see <a href="https://msdn.microsoft.com/en-us/library/aa337525.aspx">https://msdn.microsoft.com/en-us/library/aa337525.aspx</a></p>
<p>SQL Server conveniently exposes information about the Buffer Pool through perfmon. From the SQL Server:Buffer Manager perfmon object look at the following counters:</p>
<p>&middot; Buffer Cache Hit Ratio: A value of 100 means that all pages required for read and write were able to be retrieved from the Buffer Pool</p>
<p>&middot; Lazy Writes/sec: This is the mechanism that SQL Server uses to remove pages from the buffer pool to free up space. This indicates that the instance is under some memory pressure at the time</p>
<p>&middot; Checkpoint Pages/sec: Use this counter to determine when checkpoint is occurring. To ensure that your disk sub-system can keep up with the rate please ensure that Avg Disk Sec/Write does not go above 15 milliseconds when the checkpoint spike occurs. For further information see <a href="https://msdn.microsoft.com/en-us/library/ms189573.aspx">https://msdn.microsoft.com/en-us/library/ms189573.aspx</a></p>
<p>SQL Server also provides the SQL Server:Memory Manager perfmon counter object. Target Server Memory (KB) indicates the amount of physical memory that SQL Server can allocate to this instance. In the screenshot below you can see that this is approximately 57 GB. The Total Server Memory (KB) indicates the amount of memory that is currently allocated to the instance, in our case this is approximately 20 GB, which indicates that there is memory headroom on the box and pressure is not likely to occur on the buffer pool. This of course assumes that the value of the Memory\Available Mbytes counter is not low.</p>
<p><strong>Note: </strong>It is expected behavior that the Total Server Memory Counter will increase in value over time. SQL Server will not free up memory as this is an expensive task and could degrade performance in a number of ways including reducing the memory available to cache data and index pages in the buffer pool, hence increasing I/O required, therefore increasing response times as I/O is slower than memory access. If the operating system indicates that there is global memory pressure on the server then SQL will release memory. The min and max server memory settings can be used to manually control the amount of memory that each SQL instance can address. I have found this most useful when running multiple instances on the same server. See <a href="https://msdn.microsoft.com/en-us/library/ms178067.aspx">https://msdn.microsoft.com/en-us/library/ms178067.aspx</a> for more information.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/SQL%20Counters_2.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/SQL%20Counters_2.png"><img style="display: inline; border-width: 0px;" title="SQL Counters" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/SQL%20Counters_thumb.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/SQL%20Counters_thumb.png" alt="SQL Counters" width="514" height="295" border="0" /></a></p>
<p>Since we now know that BizTalk Server is not resource bound or throttling and SQL Server does not appear to be resource bound by memory, disk or processor either we will delve deeper.</p>
<h5>DMV&rsquo;s - Delving Further Into SQL Server</h5>
<p>SQL Server 2005 introduced Dynamic Management Views (DMVs) which provide instance wide and database specific state information. To explain the full scope of what DMVs offer is outside the scope of this article, indeed there are several books written on this topic.</p>
<p>From our initial analysis using perfmon we do not appear to be resource bound. When executing concurrent high throughput loads SQL Server worker threads often have to wait either to gain access to a particular database object, for accesss to a physical resource and numerous other factors. When this occurs SQL Server will write the current Wait Type to the DMVs. This is useful for troubleshooting as we will see.</p>
<p>The following query can be used to display the current waiting tasks.</p>
<p>&nbsp;</p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes;">SELECT</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes;"> wt<span style="color: gray;">.</span>session_id<span style="color: gray;">,</span> wt<span style="color: gray;">.</span>wait_type </span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"><span style="font-family: 'Courier New'; color: gray; font-size: 10pt; mso-no-proof: yes;">,</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes;"> er<span style="color: gray;">.</span>last_wait_type <span style="color: blue;">AS</span> last_wait_type </span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"><span style="font-family: 'Courier New'; color: gray; font-size: 10pt; mso-no-proof: yes;">,</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes;"> wt<span style="color: gray;">.</span>wait_duration_ms </span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"><span style="font-family: 'Courier New'; color: gray; font-size: 10pt; mso-no-proof: yes;">,</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes;"> wt<span style="color: gray;">.</span>blocking_session_id<span style="color: gray;">,</span> wt<span style="color: gray;">.</span>blocking_exec_context_id<span style="color: gray;">,</span> resource_description </span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes;">FROM</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes;"> <span style="color: green;">sys</span><span style="color: gray;">.</span><span style="color: green;">dm_os_waiting_tasks</span> wt </span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"><span style="font-family: 'Courier New'; color: gray; font-size: 10pt; mso-no-proof: yes;">JOIN</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes;"> <span style="color: green;">sys</span><span style="color: gray;">.</span><span style="color: green;">dm_exec_sessions</span> es <span style="color: blue;">ON</span> wt<span style="color: gray;">.</span>session_id <span style="color: gray;">=</span> es<span style="color: gray;">.</span>session_id </span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"><span style="font-family: 'Courier New'; color: gray; font-size: 10pt; mso-no-proof: yes;">JOIN</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes;"> <span style="color: green;">sys</span><span style="color: gray;">.</span><span style="color: green;">dm_exec_requests</span> er <span style="color: blue;">ON</span> wt<span style="color: gray;">.</span>session_id <span style="color: gray;">=</span> er<span style="color: gray;">.</span>session_id </span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes;">WHERE</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes;"> es<span style="color: gray;">.</span>is_user_process <span style="color: gray;">=</span> 1 </span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"><span style="font-family: 'Courier New'; color: gray; font-size: 10pt; mso-no-proof: yes;">AND</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes;"> wt<span style="color: gray;">.</span>wait_type <span style="color: gray;">&lt;&gt;</span> <span style="color: red;">'SLEEP_TASK' </span></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="MsoNormal"><span style="line-height: 115%; font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes;">ORDER</span><span style="line-height: 115%; font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes;"> <span style="color: blue;">BY</span> wt<span style="color: gray;">.</span>wait_duration_ms <span style="color: blue;">desc </span></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Script can be downloaded here: <a title="List%20Current%20Waiting%20Tasks.sql" href="https://cid-a60725f902516d54.skydrive.live.com/self.aspx/.Public/List%20Current%20Waiting%20Tasks.sql">List%20Current%20Waiting%20Tasks.sql</a></p>
<p>The screenshot below is a snapshot from the first test run, the waits are ordered by wait duration. The WAITFOR can be ignored as this is defined explicitly in code and is hence intended. The second wait type is a PageLatch_Ex, this is a lightweight memory semaphore construct which is used to ensure that two schedulers do not update the same page within the buffer pool. The resource description column displays the value 8:1:176839. This refers to the page in the buffer pool that that session 72 is attempting to take the exclusive latch on, the leading 8:1 indicates that it is database 8 (the Message Box), file 1.</p>
<p class="MsoNormal"><span style="line-height: 115%; font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes;">select</span><span style="line-height: 115%; font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes;"> <span style="color: fuchsia;">DB_NAME</span><span style="color: gray;">(</span>8<span style="color: gray;">)</span> <span style="color: green;">-- Use this to resolve the name of the database </span></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Current%20Waiting%20Tasks_2.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Current%20Waiting%20Tasks_2.png"><img style="display: inline; border-width: 0px;" title="Current Waiting Tasks" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Current%20Waiting%20Tasks_thumb.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Current%20Waiting%20Tasks_thumb.png" alt="Current Waiting Tasks" width="513" height="473" border="0" /></a></p>
<p>The dbcc traceon command enables trace flag 3604 which exposes further information about the page via DBCC Page with the following syntax:</p>
<p class="MsoNormal"><span style="line-height: 115%; font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes;">dbcc</span><span style="line-height: 115%; font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes;"> page<span style="color: gray;">(</span>8<span style="color: gray;">,</span>1<span style="color: gray;">,</span>176839<span style="color: gray;">,</span> <span style="color: gray;">-</span>1<span style="color: gray;">) </span></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The page is m_type 3 which is a data page. The ObjectID that this page relates to is 1813581499. For more information on using DBCC Page see:</p>
<p>How To Use DBCC Page <a href="https://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/10/625659.aspx">https://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/10/625659.aspx</a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Dbcc%20Page%20Data%20Page_2.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Dbcc%20Page%20Data%20Page_2.png"><img style="display: inline; border-width: 0px;" title="Dbcc Page Data Page" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Dbcc%20Page%20Data%20Page_thumb.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Dbcc%20Page%20Data%20Page_thumb.png" alt="Dbcc Page Data Page" width="512" height="503" border="0" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>By using <span style="line-height: 115%; font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa;">select</span><span style="line-height: 115%; font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa;"> <span style="color: fuchsia;">OBJECT_NAME</span><span style="color: gray;">(</span>1813581499<span style="color: gray;">)</span></span>we can determine that the wait is latch is waiting on the spool table. This makes sense because the spool table is a shared table across the BizTalk group, every time a message is inserted into the MessageBox a row needs to be added to the spool. Because the row size of the spool table is relatively small, multiple rows will be present on each page (up to 8 KB), therefore on a large multi-CPU SQL Server this can result in latch contention on these data pages.</p>
<p><strong><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/object_name_2.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/object_name_2.png"><img style="display: inline; border-width: 0px;" title="object_name" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/object_name_thumb.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/object_name_thumb.png" alt="object_name" width="512" height="429" border="0" /></a> </strong></p>
<p>&nbsp;</p>
<p>I then proceeded to look at several of the pages in the list, going in descending order by wait time. The first few where all waiting for a shared or exclusive latch on a page from the spool table. The next page that was of interest was 8:1:258816, the output from DBCC Page is shown below in the screenshot. Pay attention to the M_Type value which in this case is 11. M_Type 11 is significant because this refers to a PFS page. PFS stands for Page Free Space, this page holds allocation and free space information about pages within the next PFS interval, which is approximately 64 MB. This structure is to used to ensure that multiple schedulers (SQL&rsquo;s term for CPU) do not access the same page at the same time. On a high CPU system this can become a bottleneck. Because there is a PFS page per 64 MB chunk of each database file a common best practice technique which is used to alleviate this is to create as many files per filegroup as there are schedulers (CPU&rsquo;s) in your system. This is what we will do next, whilst we are it we will also fix one of the other common allocation bottlenecks within SQL Server by creating multiple TempDB data files.</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Dbcc%20Page%20PFS%20PAge_2.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Dbcc%20Page%20PFS%20PAge_2.png"><img style="display: inline; border-width: 0px;" title="Dbcc Page PFS PAge" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Dbcc%20Page%20PFS%20PAge_thumb.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Dbcc%20Page%20PFS%20PAge_thumb.png" alt="Dbcc Page PFS PAge" width="507" height="517" border="0" /></a></p>
<p>For more information on allocation bottlenecks and PFS see:</p>
<p>What is an allocation bottleneck: <a href="https://blogs.msdn.com/sqlserverstorageengine/archive/2009/01/04/what-is-allocation-bottleneck.aspx">https://blogs.msdn.com/sqlserverstorageengine/archive/2009/01/04/what-is-allocation-bottleneck.aspx</a></p>
<p>Under the covers: GAM, SGAM and PFS Pages:</p>
<p><a href="https://blogs.msdn.com/sqlserverstorageengine/archive/2006/07/08/under-the-covers-gam-sgam-and-pfs-pages.aspx">https://blogs.msdn.com/sqlserverstorageengine/archive/2006/07/08/under-the-covers-gam-sgam-and-pfs-pages.aspx</a></p>
<p>Anatomy of a page:</p>
<p><a href="https://www.sqlskills.com/blogs/paul/post/Inside-the-Storage-Engine-Anatomy-of-a-page.aspx">https://www.sqlskills.com/blogs/paul/post/Inside-the-Storage-Engine-Anatomy-of-a-page.aspx</a></p>
<p><strong>Easier Way To Troubleshoot Latch Contention </strong></p>
<p>Before we move onto the next test run where wie will add more files to the MessageBox and TempDB databases to alleviate allocation issues. Let&rsquo;s explore another technique which some of my colleagues from our SQLCAT team shared with me. One of the drawbacks of drawing conclusions from point in time snapshots is that it can result in false positives or negatives. The attached script takes 600 samples over an approximate 60 second period (precise run time depends on the size of your buffer pool) from the sys.dm_os_waiting_tasks DMV view and aggregates all this information together, in addition it uses a number of other DMV views including sys.dm_os_buffer_descriptors to display the actual object name that is the waiting resource for the latch. This information is aggregated in a temporary table, by adjusting the number of samples that the query uses you can gain an understanding of what your MessageBox is waiting for when under load. Now let&rsquo;s look at the output that I got in the screenshot below.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Latch%20waits_4.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Latch%20waits_4.png"><img style="display: inline; border-width: 0px;" title="Latch waits" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Latch%20waits_thumb_1.png" original-url="https://blogs.msdn.com/blogfiles/ewanf/WindowsLiveWriter/BenchmarkyourBizTalkServerPart3_D69D/Latch%20waits_thumb_1.png" alt="Latch waits" width="519" height="489" border="0" /></a></p>
<p>Script can be downloaded here:</p>
<p><a title="Modified%5E_LatestFindWaitResource.sql" href="https://cid-a60725f902516d54.skydrive.live.com/self.aspx/.Public/Modified%5E_LatestFindWaitResource.sql">Modified%5E_LatestFindWaitResource.sql</a></p>
<p>&nbsp;</p>
<p>You can see that the majority of wait time was actually spent in our tracking data tables, this means that by disabling tracking by configuring the global tracking option in the adm_group table in the management database I can reduce the latching that I get in my system. To minimize the changes I make between test runs let&rsquo;s make the change to the number of MessageBox and TempDB files first&hellip;</p>]]></content:encoded>
    </item>
    <item>
      <title>BizTalk 2009/VS 2008 Creating project ‘project name’… project creation failed.</title>
      <link>https://docs.microsoft.com/archive/blogs/ewanf/biztalk-2009vs-2008-creating-project-project-name-project-creation-failed</link>
      <pubDate>Sat, 24 Oct 2009 17:38:00 GMT</pubDate>
      <dc:creator><![CDATA[Ewan Fairweather (Azure CAT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ewanf/2009/10/24/biztalk-2009vs-2008-creating-project-project-name-project-creation-failed/</guid>
      <description><![CDATA[Just a quick post.&nbsp; I hit this on my machine today whilst writing a quick sample.&nbsp; When...]]></description>
      <content:encoded><![CDATA[<P>Just a quick post.&nbsp; I hit this on my machine today whilst writing a quick sample.&nbsp; When creating a BizTalk Project I got Creating project ‘project name’… project creation failed in the VIsual Studio dialog bottom left of the screen.&nbsp; Changing the reg key referenced by Guru/Vinay in the BizTalk CPR blog fixes it <A href="https://blogs.msdn.com/biztalkcrt/archive/2009/08/21/visual-studio-2008-fails-to-create-open-biztalk-projects.aspx" mce_href="https://blogs.msdn.com/biztalkcrt/archive/2009/08/21/visual-studio-2008-fails-to-create-open-biztalk-projects.aspx">https://blogs.msdn.com/biztalkcrt/archive/2009/08/21/visual-studio-2008-fails-to-create-open-biztalk-projects.aspx</A>&nbsp;</P>
<P mce_keep="true">&nbsp;</P>
<P>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Projects\{FAE04EC0-301F-11d3-BF4B-00C04F79EFBC}] 
<BLOCKQUOTE>
<P>"PossibleProjectExtensions"="csproj"&nbsp;&nbsp; - Original VS install reg value. "PossibleProjectExtensions"="csproj;btproj" - Post Biztalk installation reg value</P></BLOCKQUOTE>]]></content:encoded>
    </item>
    <item>
      <title>TechNet Webcast: BizTalk Server 2009 Performance on Hyper-V and Physical Deployments (Level 300)</title>
      <link>https://docs.microsoft.com/archive/blogs/ewanf/technet-webcast-biztalk-server-2009-performance-on-hyper-v-and-physical-deployments-level-300</link>
      <pubDate>Mon, 31 Aug 2009 01:10:00 GMT</pubDate>
      <dc:creator><![CDATA[Ewan Fairweather (Azure CAT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ewanf/2009/08/31/technet-webcast-biztalk-server-2009-performance-on-hyper-v-and-physical-deployments-level-300/</guid>
      <description><![CDATA[I'm presenting a webcast on BizTalk Performance this Tuesday September 01, 2009 1:00 PM Pacific Time...]]></description>
      <content:encoded><![CDATA[<P>I'm presenting a webcast on BizTalk Performance this Tuesday September 01, 2009 1:00 PM Pacific Time along with Trace Young who wrote the majority of the BizTalk Documentation.&nbsp; We'll be covering a summary of all the performance tests we've performed in the lab this year and answering any questions.&nbsp; Please tune in if you have any performance related questions or if you just want to see what we have been up to.&nbsp; </P>
<P>&nbsp;Registration link is here:</P>
<P><A href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032416252&amp;EventCategory=4&amp;culture=en-US&amp;CountryCode=US">https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032416252&amp;EventCategory=4&amp;culture=en-US&amp;CountryCode=US</A></P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>RFID Operations Guide Live</title>
      <link>https://docs.microsoft.com/archive/blogs/ewanf/rfid-operations-guide-live</link>
      <pubDate>Thu, 30 Jul 2009 18:31:00 GMT</pubDate>
      <dc:creator><![CDATA[Ewan Fairweather (Azure CAT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ewanf/2009/07/30/rfid-operations-guide-live/</guid>
      <description><![CDATA[Rama, one of my colleagues in the CAT team has just shipped the BizTalk Server 2009 RFID Operations...]]></description>
      <content:encoded><![CDATA[<P>Rama, one of my colleagues in the CAT team has just shipped the BizTalk Server 2009 RFID Operations Guide.&nbsp; Rama worked for two years as a Feature Program Manager on the V1 release and joined the CAT team just under a year ago.&nbsp; He knows RFID inside and out and this guide represents comprehensive documentation on how to actually run it in your environment.&nbsp; Everything that Rama wrote he has personally tested to ensure it is the optimal technique.&nbsp; This is an absolutely must read:</P>
<P>&nbsp;<SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 9pt">The BizTalk Customer Advisory Team and the BizTalk Server UA Team are pleased to announce the availability of the first “<A href="https://msdn.microsoft.com/en-us/library/ee309289(BTS.10).aspx"><FONT color=#0000ff>BizTalk Server 2009 RFID Operations Guide</FONT></A>”<SPAN style="COLOR: #1f497d">. </SPAN>The 108-page guide is intended to help plan for and maintain BizTalk Server RFID deployments in production by providing guidance and actionable checklists. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 9pt"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 9pt">The guide was produced as an aggregation of learnings from BizTalk CAT engagements, Field and Partner engagements over the last year. It was reviewed by partners, MVPs, customers and internal RFID experts who have provided extensive feedback. It should create a reference foundation for IT pros and developers maintaining RFID installations. <o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="COLOR: #1f497d"><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P style="LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 9pt">The key sections of the guide are:<SPAN style="COLOR: #1f497d"><o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: 115%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: Symbol; FONT-SIZE: 9pt; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN class=MsoHyperlink><A href="https://msdn.microsoft.com/en-us/library/ee309293(BTS.10).aspx"><FONT color=#0000ff face=Verdana>Planning the Environment for BizTalk Server RFID</FONT></A></SPAN><FONT face=Verdana>: Explains the planning required for various components such as RFID devices, servers deployment, performance, HA, etc. to ensure that your BizTalk Server RFID infrastructure and applications become operationally ready.<SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt"><o:p></o:p></SPAN></FONT></P>
<P style="LINE-HEIGHT: 115%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN class=MsoHyperlink><A href="https://msdn.microsoft.com/en-us/library/ee309290(BTS.10).aspx"><FONT color=#0000ff face=Verdana>Operations Checklist</FONT></A></SPAN><FONT face=Verdana>: Provides a set of daily, weekly and monthly tasks that will empower the IT Pro to assess and evaluate the operational readiness state of a BizTalk Server RFID deployment.<o:p></o:p></FONT></P>
<P style="LINE-HEIGHT: 115%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN class=MsoHyperlink><A href="https://msdn.microsoft.com/en-us/library/ee309286(BTS.10).aspx"><FONT color=#0000ff face=Verdana>Managing Deployment</FONT></A></SPAN><FONT face=Verdana>: Covers best practices, key concepts, and procedures specific to BizTalk Server RFID and its dependencies for maintaining, managing and monitoring the various components.<o:p></o:p></FONT></P>
<P style="LINE-HEIGHT: 115%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><A href="https://msdn.microsoft.com/en-us/library/ee309303(BTS.10).aspx"><FONT color=#0000ff face=Verdana>BizTalk RFID Useful links</FONT></A><FONT face=Verdana>: Compiles all the BizTalk Server RFID relevant links that will be useful post deployment to production.<o:p></o:p></FONT></P>
<P style="LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 9pt">Full MSDN URL:<SPAN style="COLOR: #1f497d">&nbsp;&nbsp;&nbsp;&nbsp;<A href="https://msdn.microsoft.com/en-us/library/ee309289(BTS.10).aspx"><FONT color=#0000ff>https://msdn.microsoft.com/en-us/library/ee309289(BTS.10).aspx</FONT></A> <o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 9pt">Available on <SPAN style="COLOR: #1f497d"><A href="https://msdn.microsoft.com/en-us/library/ee309289(BTS.10).aspx"><FONT color=#0000ff>MSDN</FONT></A></SPAN>, <SPAN style="COLOR: #1f497d"><A href="https://technet.microsoft.com/en-us/library/ee309289(BTS.10).aspx"><FONT color=#0000ff>TechNet</FONT></A></SPAN> and <SPAN style="COLOR: #1f497d"><A href="https://msdn.microsoft.com/en-us/biztalk/default.aspx">the developer center</A></SPAN> as a DOCX or CHM or PDF version.</SPAN><o:p></o:p></P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>BizTalk CAT Page on MSDN and Presentation Resources</title>
      <link>https://docs.microsoft.com/archive/blogs/ewanf/biztalk-cat-page-on-msdn-and-presentation-resources</link>
      <pubDate>Wed, 15 Jul 2009 00:30:00 GMT</pubDate>
      <dc:creator><![CDATA[Ewan Fairweather (Azure CAT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ewanf/2009/07/15/biztalk-cat-page-on-msdn-and-presentation-resources/</guid>
      <description><![CDATA[To provide presence for the team in an official manner on MSDN we have over the last few months put...]]></description>
      <content:encoded><![CDATA[<P>To provide presence for the team in an official manner on MSDN we have over the last few months put up the following page:</P>
<P><A href="https://msdn.microsoft.com/en-us/biztalk/dd876758.aspx">https://msdn.microsoft.com/en-us/biztalk/dd876758.aspx</A>&nbsp;</P>
<P>Our team delivers many presentations to internal and external audiences on BizTalk, we have put some of these up here, see links below.&nbsp; Please feel free to use these as you wish.&nbsp; We will be adding more presentations over the next few months as we wrap up our tests for the BizTalk 2009 performance guide (estimated delivery date August 1st 2009). </P>
<P>&nbsp;<A href="https://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=d36d4c36-7396-4302-929f-7c59ff4327f6">https://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=d36d4c36-7396-4302-929f-7c59ff4327f6</A></P>
<P>
<TABLE id=multiFileList border=0 cellSpacing=0 cellPadding=3>
<TBODY>
<TR>
<TD>
<P>BizTalk 2009 Performance Characteristics on Hyper-V and Physical Platforms.pptx</P></TD>
<TD>
<P>4.2 MB</P></TD>
<TD class=buttonCell class="buttonCell">
<SCRIPT type=text/javascript>
									<!--
									document.write("<button onClick=\"window.location.href=&quot;info.aspx?na=46&p=1&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=d36d4c36-7396-4302-929f-7c59ff4327f6&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fF%2fC%2fF%2fFCFA6848-2195-49F8-82D5-A47C80F8B2F7%2fBizTalk+2009+Performance+Characteristics+on+Hyper-V+and+Physical+Platforms.pptx&oRef=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2fbiztalk%2fdd876758.aspx&quot;\">Download</button>");
									// -->
								</SCRIPT>
<BUTTON onclick='window.location.href="info.aspx?na=46&amp;p=1&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=d36d4c36-7396-4302-929f-7c59ff4327f6&amp;u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fF%2fC%2fF%2fFCFA6848-2195-49F8-82D5-A47C80F8B2F7%2fBizTalk+2009+Performance+Characteristics+on+Hyper-V+and+Physical+Platforms.pptx&amp;oRef=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2fbiztalk%2fdd876758.aspx"'>Download</BUTTON><NOSCRIPT></NOSCRIPT></TD></TR>
<TR bgColor=#f1f1f1>
<TD>
<P>BizTalk 2009 Performance.pptx</P></TD>
<TD>
<P>2.1 MB</P></TD>
<TD class=buttonCell class="buttonCell">
<SCRIPT type=text/javascript>
									<!--
									document.write("<button onClick=\"window.location.href=&quot;info.aspx?na=46&p=2&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=d36d4c36-7396-4302-929f-7c59ff4327f6&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fF%2fC%2fF%2fFCFA6848-2195-49F8-82D5-A47C80F8B2F7%2fBizTalk+2009+Performance.pptx&oRef=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2fbiztalk%2fdd876758.aspx&quot;\">Download</button>");
									// -->
								</SCRIPT>
<BUTTON onclick='window.location.href="info.aspx?na=46&amp;p=2&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=d36d4c36-7396-4302-929f-7c59ff4327f6&amp;u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fF%2fC%2fF%2fFCFA6848-2195-49F8-82D5-A47C80F8B2F7%2fBizTalk+2009+Performance.pptx&amp;oRef=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2fbiztalk%2fdd876758.aspx"'>Download</BUTTON><NOSCRIPT></NOSCRIPT></TD></TR>
<TR>
<TD>
<P>BizTalk End-to-End Performance Testing Guidance .pptx</P></TD>
<TD>
<P>2.8 MB</P></TD>
<TD class=buttonCell class="buttonCell">
<SCRIPT type=text/javascript>
									<!--
									document.write("<button onClick=\"window.location.href=&quot;info.aspx?na=46&p=3&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=d36d4c36-7396-4302-929f-7c59ff4327f6&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fF%2fC%2fF%2fFCFA6848-2195-49F8-82D5-A47C80F8B2F7%2fBizTalk+End-to-End+Performance+Testing+Guidance+.pptx&oRef=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2fbiztalk%2fdd876758.aspx&quot;\">Download</button>");
									// -->
								</SCRIPT>
<BUTTON onclick='window.location.href="info.aspx?na=46&amp;p=3&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=d36d4c36-7396-4302-929f-7c59ff4327f6&amp;u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fF%2fC%2fF%2fFCFA6848-2195-49F8-82D5-A47C80F8B2F7%2fBizTalk+End-to-End+Performance+Testing+Guidance+.pptx&amp;oRef=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2fbiztalk%2fdd876758.aspx"'>Download</BUTTON><NOSCRIPT></NOSCRIPT></TD></TR>
<TR bgColor=#f1f1f1>
<TD>
<P>BizTalk Hyper-V Virtualization Guidance.pptx</P></TD>
<TD>
<P>1.6 MB</P></TD>
<TD class=buttonCell class="buttonCell">
<SCRIPT type=text/javascript>
									<!--
									document.write("<button onClick=\"window.location.href=&quot;info.aspx?na=46&p=4&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=d36d4c36-7396-4302-929f-7c59ff4327f6&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fF%2fC%2fF%2fFCFA6848-2195-49F8-82D5-A47C80F8B2F7%2fBizTalk+Hyper-V+Virtualization+Guidance.pptx&oRef=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2fbiztalk%2fdd876758.aspx&quot;\">Download</button>");
									// -->
								</SCRIPT>
<BUTTON onclick='window.location.href="info.aspx?na=46&amp;p=4&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=d36d4c36-7396-4302-929f-7c59ff4327f6&amp;u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fF%2fC%2fF%2fFCFA6848-2195-49F8-82D5-A47C80F8B2F7%2fBizTalk+Hyper-V+Virtualization+Guidance.pptx&amp;oRef=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2fbiztalk%2fdd876758.aspx"'>Download</BUTTON></TD></TR></TBODY></TABLE></P>]]></content:encoded>
    </item>
    <item>
      <title>Interview with Richard Seroter</title>
      <link>https://docs.microsoft.com/archive/blogs/ewanf/interview-with-richard-seroter</link>
      <pubDate>Thu, 02 Apr 2009 20:11:00 GMT</pubDate>
      <dc:creator><![CDATA[Ewan Fairweather (Azure CAT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ewanf/2009/04/02/interview-with-richard-seroter/</guid>
      <description><![CDATA[I had the pleasure of taking part in Richard Seroter's interview series this week...]]></description>
      <content:encoded><![CDATA[<P>I had the pleasure of taking part in Richard Seroter's interview series this week <A href="https://seroter.wordpress.com/2009/04/02/interview-series-four-questions-with-ewan-fairweather/">https://seroter.wordpress.com/2009/04/02/interview-series-four-questions-with-ewan-fairweather/</A></P>
<P>Richard is one of our most prolific CSD bloggers and is a real asset to the MVP community.&nbsp; I've had the pleasure of reviewing his upcoming book <A title="SOA Patterns with BizTalk Server 2009" href="https://www.packtpub.com/soa-patterns-with-biztalk-server-2009/book" mce_href="https://www.packtpub.com/soa-patterns-with-biztalk-server-2009/book">"SOA Patterns with BizTalk Server 2009"</A>&nbsp;which is available&nbsp;for pre-order now.&nbsp; For those of you who are architecting SOA applicaitons that are using BizTalk Server and related technologies Richard's book is unmissable reading.&nbsp; I will be publishing a full review of the book shortly.&nbsp; </P>
<P>Richard has an overview of the book available on his blog at <A href="https://seroter.wordpress.com/2009/03/19/my-book-soa-patterns-with-biztalk-server-2009-is-up-for-pre-order/">https://seroter.wordpress.com/2009/03/19/my-book-soa-patterns-with-biztalk-server-2009-is-up-for-pre-order/</A>&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Hyper-V BizTalk Blue Screen of Death with NLB</title>
      <link>https://docs.microsoft.com/archive/blogs/ewanf/hyper-v-biztalk-blue-screen-of-death-with-nlb</link>
      <pubDate>Thu, 08 Jan 2009 19:25:00 GMT</pubDate>
      <dc:creator><![CDATA[Ewan Fairweather (Azure CAT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ewanf/2009/01/08/hyper-v-biztalk-blue-screen-of-death-with-nlb/</guid>
      <description><![CDATA[I discovered a must install KB for Hyper-V BizTalk installations if you are using NLB...]]></description>
      <content:encoded><![CDATA[<P>I discovered a must install KB for Hyper-V BizTalk installations if you are using NLB today.&nbsp;</P>
<P>I'm setting up the lab for our BizTalk 2009 performance boot camp next week.&nbsp; We're comparing the performance of common Orchestration scenarios and optimizations that we've discovered on the R2 platform on 2009 physical and 2009 running in a Hyper-V environment.&nbsp; The results of this will be published in the BizTalk 2009 Performance Optimization Guide and the BizTalk 2009 Hyper-V Guide (see the previous versions&nbsp;<A href="https://technet.microsoft.com/en-us/library/cc558617.aspx" mce_href="https://technet.microsoft.com/en-us/library/cc558617.aspx">https://technet.microsoft.com/en-us/library/cc558617.aspx</A> and <A href="https://technet.microsoft.com/en-us/library/cc768518.aspx" mce_href="https://technet.microsoft.com/en-us/library/cc768518.aspx">https://technet.microsoft.com/en-us/library/cc768518.aspx</A>.</P>
<P>Because we're using WCF receive locations I set up NLB on the Hyper-V boxes.&nbsp; Everytime I logged onto the boxes and try and install BizTalk 2009 the boxes would Blue Screen of Death.&nbsp; </P>
<P>After much troubleshooting that KB953828 resolves the issue. </P>
<P><A href="https://support.microsoft.com/kb/953828/en-us">https://support.microsoft.com/kb/953828/en-us</A></P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Performance Story about Traceflag T1118 and the cluster registry checkpoint service</title>
      <link>https://docs.microsoft.com/archive/blogs/ewanf/performance-story-about-traceflag-t1118-and-the-cluster-registry-checkpoint-service</link>
      <pubDate>Sat, 13 Dec 2008 01:26:00 GMT</pubDate>
      <dc:creator><![CDATA[Ewan Fairweather (Azure CAT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ewanf/2008/12/13/performance-story-about-traceflag-t1118-and-the-cluster-registry-checkpoint-service/</guid>
      <description><![CDATA[I've just got back from a week working with a customer.&nbsp;The customer was a large retailer using...]]></description>
      <content:encoded><![CDATA[<P>I've just got back from a week working with a customer.&nbsp;The customer was a large retailer using BizTalk to perform processing over AS2.&nbsp; They had just installed a new QA environment and wanted the operational environment to be optimized for their application.&nbsp; I had a gotcha with SQL Clustering which I wasn't aware of and I wanted to share.</P>
<P>As with any BizTalk installation, I started from the ground up and switched their SQL Storage from Raid 5 (which is very bad for write performance - which BizTalk does a lot of) to RAID 10.&nbsp; Over time in the lab I've also found that changing the NTFS cluster size can gain performance improvements.&nbsp; Typically we use 64KB for data LUNS (which host the BizTalk Database MDF files) and 4KB NTFS cluster size for log file LUNS (LDF's).</P>
<P>Optimizing TEMPDB is another of the optimizations that we tend to do.&nbsp; Specifically&nbsp;splitting temp db into multiple equal size files, 1 per Logical Proc&nbsp;available on the&nbsp;server.&nbsp; To reduce contention further on SQL Server and prevent almost all single page allocations Trace Flag T1118 is then applied.</P>
<P>I used SQL 2005 configuration manager to make the change by opening the tool, clicking SQL Server 2005 Services and then&nbsp;double clicking&nbsp;SQL Server (instance name).&nbsp; In the SQL Server (Instance name) properties dialog box on the advanced tab I added the following text at the end of the existing string: -T1118.&nbsp; Crucially what I'd forgotten to include was the semi colon required.&nbsp; So what I'd actually done was change the following </P>
<P>...-lc:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf</P>
<P>to </P>
<P>...-lc:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf-T1118</P>
<P>In other words the SQL Server would not attempt to load a log file for the Master database with name mastlog.ldf-T1118. Still unbeknown that I had made this error we rebooted the cluster so an OS hotfix could take affect.&nbsp; </P>
<P>When the server rebooted SQL Server would not start and the following error was in the SQL Error log</P>
<P>Can't open file "c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf -T1118"</P>
<P>We removed the T1118 from the Configuration Manager properties used previously and attempted to bring the SQL Service back online.&nbsp; It failed again with the sam error in the error log. We examined the SQL configuration manager properties and the -T1118 is still appended to the Master log file name.&nbsp; We try this several times even going into the registry directly (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\Parameters) to try and change it.&nbsp; But no matter what we do it stayed there.</P>
<P>&nbsp;Those of you who are cluster gurus reading this are probably laughing because you know what has happened.&nbsp; If SQL is clustered it is the WIndows Clustering Service which controls its execution and manages based on the clsuter config which node it will start on.&nbsp; In order that SQL Server functions correctly when failed over between servers, the cluster service stores a checkpoint registry on the cluster quorum disk.</P>
<P>In this case when the change was made and the cluster was rebooted, this incorrect configuration was stored on the quorum disk. Because changes to the checkpoint can only be made when the service (in this case SQL) is online the change I was making to remove T1118 was never getting saved and the incorrect config was consistently erasing our right config.&nbsp; Talk about frustrating.</P>
<P>Fortunately there is a work around on this, which one of my colleagues in the Clustering Support Team was able to help me out with.</P>
<P>&nbsp;1. Disable the cluster checkpoint for the specific registry key: </P>
<P>c:\&gt; cluster res "SQL Server" /removecheck: "Software\Microsoft\Microsoft SQL Server\MSSQL.\MSSQLSERVER"<SPAN style="FONT-SIZE: 9pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>&nbsp;</o:p></SPAN></P>
<P><SPAN style="FONT-SIZE: 9pt"><o:p></o:p></SPAN>2. Correct the trace flag using SQL configuraiton manager or the registry</P>
<P>3. Re-enable Cluster checkpoint for the specific registry key: </P>
<P>c:\&gt; cluster res "SQL Server" /addcheck: "Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLSERVER"</P>]]></content:encoded>
    </item>
    <item>
      <title>BizTalk Ranger Blog - Paolo Salvatori</title>
      <link>https://docs.microsoft.com/archive/blogs/ewanf/biztalk-ranger-blog-paolo-salvatori</link>
      <pubDate>Wed, 23 Jul 2008 12:59:00 GMT</pubDate>
      <dc:creator><![CDATA[Ewan Fairweather (Azure CAT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ewanf/2008/07/23/biztalk-ranger-blog-paolo-salvatori/</guid>
      <description><![CDATA[My friend and colleague Paolo Salvatori has just started a&nbsp;blog at...]]></description>
      <content:encoded><![CDATA[<P>My friend and colleague Paolo Salvatori has just started a&nbsp;blog at <A href="https://blogs.msdn.com/paolos/">https://blogs.msdn.com/paolos/</A>&nbsp;and began with a great post on Synchronous to Asynchronous Flows Without an Orchestration <A href="https://blogs.msdn.com/paolos/archive/2008/07/21/msdn-blogs.aspx">https://blogs.msdn.com/paolos/archive/2008/07/21/msdn-blogs.aspx</A>.&nbsp; As you'll see from the post Paolo loves to delve into technical issues and always provides comprehensive report and great source code samples to back up his findings.</P>
<P>I'd definitely recommend adding this blog to your feed/favourites as I can guarantee from Paolo's previous work that you will see lot's of interesting content. </P>]]></content:encoded>
    </item>
  </channel>
</rss>