<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>AsiaBizTalk: CustomerCare</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/asiabiztalk/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/asiabiztalk/feed.xml</link>
    <description>Contributed by Microsoft APGC CSS DSI Team</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:18:51 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>How to remove blank namespace when retrieving data using WCF-SQL adapter with FOR XML clause stored procedure</title>
      <link>https://docs.microsoft.com/archive/blogs/asiabiztalk/how-to-remove-blank-namespace-when-retrieving-data-using-wcf-sql-adapter-with-for-xml-clause-stored-procedure</link>
      <pubDate>Mon, 31 Oct 2011 20:06:39 GMT</pubDate>
      <dc:creator><![CDATA[AsiaBizTalk]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/asiabiztalk/2011/10/31/how-to-remove-blank-namespace-when-retrieving-data-using-wcf-sql-adapter-with-for-xml-clause-stored-procedure/</guid>
      <description><![CDATA[Problem Description
==================
&nbsp;
&nbsp;
When using BizTalk WCF-SQL adapter to...]]></description>
      <content:encoded><![CDATA[<p><strong>Problem Description</strong></p>
<p><strong>==================</strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>When using BizTalk WCF-SQL adapter to retrieve data from<br />SQL, there is a known issue that a blank namespace may be generated when a FOR<br />XML clause stored procedure is used. For example, the empty <b>xmlns="" </b>on FTP_KC_SERIAL_NO_HEAD in the<br />following XML instance.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&lt;?xml version="1.0" encoding="utf-8"<br />?&gt;</p>
<p>- &lt;Root xmlns="<a href="http://TestEDI.SP_GetDataFromFTPKCSerialNo">http://TestEDI.SP_GetDataFromFTPKCSerialNo</a>"&gt;</p>
<p>- &lt;FTP_KC_SERIAL_NO_HEAD <b>xmlns=""</b>&gt;</p>
<p>&nbsp; &lt;INV_NO&gt;30111112173&lt;/INV_NO&gt;</p>
<p>&nbsp;&nbsp;&lt;ImportDate&gt;8/16/2011 3:05:43<br />PM&lt;/ImportDate&gt;</p>
<p>&nbsp;&nbsp;&lt;Status&gt;processing&lt;/Status&gt;</p>
<p>&nbsp;&nbsp;&lt;SendDate&gt;8/16/2011 3:35:21<br />PM&lt;/SendDate&gt;</p>
<p>&nbsp;&nbsp;&lt;FROM_DUNS&gt;12490306&lt;/FROM_DUNS&gt;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Problem Analysis</p>
<p>&nbsp;</p>
<p>================</p>
<p>&nbsp;</p>
<p>There are various of approaches to resolve the issue, a<br />simple workaround may be to set &ldquo;FORM = UNQUALIFIED&rdquo; on the message schema to<br />ignore it.</p>
<p>&nbsp;</p>
<p>However sometimes this kind of blank namespaces will cause<br />errors within map. In this case, you may consider writing a simple pipeline<br />component to completely remove it from the XML message body.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Problem Resolution</p>
<p>&nbsp;</p>
<p>=================</p>
<p>&nbsp;</p>
<p>Sample code snippet of pipeline component to remove blank<br />xml namespaces.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #region IComponent Members</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// This method Executes<br />the pipeline component</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="pContext"&gt;pipelinecontext Interface&lt;/param&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="pInMsg"&gt;the incoming XLang Message on which we have to operate&lt;/param&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;&lt;/returns&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public IBaseMessage Execute(IPipelineContext<br />pContext, IBaseMessage pInMsg)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//Validate parameters</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />if (pContext == null)<br />throw new ArgumentNullException("pContext");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />if (pInMsg == null)<br />throw new ArgumentNullException("pInMsg");</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />this.pipelineContext = pContext;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />this.baseMessage = pInMsg;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />Stream outStream = null;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />string partName;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />for (int i = 0;<br />i &lt; baseMessage.PartCount; i++)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />partName = null;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />IBaseMessagePart part = baseMessage.GetPartByIndex(i, out<br />partName);</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />RemoveBlankNamespace(part.GetOriginalDataStream(), out<br />outStream);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />outStream.Seek(0, SeekOrigin.Begin);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />part.Data = outStream;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />return baseMessage;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />#endregion</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #region Private-Methods</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// This method remove<br />blank xml namespace attribute: xmlns="" from input message body<br />stream.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="xmlData"&gt;the actual stream of the data needs to be manipulated&lt;/param&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="modifiedXmlData"&gt;the modifiedStream is passed as a out parameter&lt;/param&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;&lt;/returns&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void<br />RemoveBlankNamespace(Stream xmlData, out Stream<br />modifiedXmlData)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />modifiedXmlData = new MemoryStream();</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />StreamReader reader = new StreamReader(xmlData);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />String messageBody = reader.ReadToEnd();</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />messageBody = messageBody.Replace("<br />xmlns=\"\"","");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />byte[] messageBytes = System.Text.Encoding.UTF8.GetBytes(messageBody);</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modifiedXmlData.Write(messageBytes,<br />0, messageBytes.Length);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />#endregion</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>More Information</p>
<p>&nbsp;</p>
<p>=================</p>
<p>&nbsp;</p>
<p>A relevant forum thread:</p>
<p>&nbsp;</p>
<p>Namespace appear in the child node when using FOR XML output<br />in BizTalk server 2009 and the map fails</p>
<p><a href="http://social.msdn.microsoft.com/Forums/is/biztalkr2adapters/thread/f996af8b-1056-4a62-8628-d3845fa36e96">http://social.msdn.microsoft.com/Forums/is/biztalkr2adapters/thread/f996af8b-1056-4a62-8628-d3845fa36e96</a></p>]]></content:encoded>
    </item>
    <item>
      <title>When configuring FTPS in BizTalk Server 2010, there is an error "The client and server cannot communicate, because they do not possess a common algorithm"</title>
      <link>https://docs.microsoft.com/archive/blogs/asiabiztalk/when-configuring-ftps-in-biztalk-server-2010-there-is-an-error-the-client-and-server-cannot-communicate-because-they-do-not-possess-a-common-algorithm</link>
      <pubDate>Mon, 24 Oct 2011 01:40:52 GMT</pubDate>
      <dc:creator><![CDATA[AsiaBizTalk]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/asiabiztalk/2011/10/24/when-configuring-ftps-in-biztalk-server-2010-there-is-an-error-the-client-and-server-cannot-communicate-because-they-do-not-possess-a-common-algorithm/</guid>
      <description><![CDATA[Problem Description
==================
&nbsp;
When configuring the new feature FTPS adapter...]]></description>
      <content:encoded><![CDATA[<p align="left"><b>Problem Description</b></p>
<p align="left"><b>==================</b></p>
<p align="left">&nbsp;</p>
<p align="left">When configuring the new feature FTPS adapter (receive or send) to connect FTP server in BizTalk Server 2010, there may raise the following error in the event log on BizTalk Server:</p>
<p align="left">&nbsp;</p>
<p align="left"><span style="background-color: #ffcc00;">&ldquo;The client and server cannot communicate, because they do not possess a common algorithm&rdquo;<b> </b></span></p>
<p align="left"><b>&nbsp;</b></p>
<p align="left"><b>Problem Analysis</b></p>
<p align="left"><b>================</b></p>
<p align="left">&nbsp;</p>
<p align="left"><span style="background-color: #ffcc00;">We collect dump files forBTSNTSvc.exe when reproducing this issue, and we have the following information.</span></p>
<p align="left">&nbsp;</p>
<p align="left"><span style="background-color: #ffcc00;">The status code 0x80090331 means SEC_E_ALGORITHM_MISMATCH.</span></p>
<p align="left">&nbsp;</p>
<p align="left"><span style="background-color: #ffcc00;">In addition, after we look into the source code, from the parameters which was passed to sspicli!AcquireCredentialsHandleW by the BizTalk xceedftpbiztalk module, we could see BizTalk FTPS only support TLS v1. So the problem is caused by that TLS v1 is disabled in the BizTalk Server box.</span></p>
<p align="left">&nbsp;</p>
<p>0:027&gt; p</p>
<p>Time Travel Position:<br />FE3840000296.</p>
<p>eax=80090331 ebx=00000000<br />ecx=01a55038 edx=00000001 esi=5d02a0e8 edi=01a54c88</p>
<p>eip=74b3151e esp=254cebd4<br />ebp=254cebd4 iopl=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nv up ei pl<br />zr na pe nc</p>
<p>cs=0023&nbsp; ss=002b&nbsp;<br />ds=002b&nbsp; es=002b&nbsp; fs=0053&nbsp;<br />gs=002b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />efl=00000246</p>
<p>sspicli!AcquireCredentialsHandleW+0x27:</p>
<p>74b3151e<br />5d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />pop&nbsp;&nbsp;&nbsp;&nbsp; ebp</p>
<p>0:027&gt; !gle</p>
<p>LastErrorValue: (Win32) 0x1<br />(1) - Incorrect function.</p>
<p>LastStatusValue: (NTSTATUS) 0x80090331 - The client and server cannot<br />communicate, because they do not possess a common algorithm.</p>
<p>&nbsp;</p>
<p>0:027&gt; gu</p>
<p>Time Travel Position:<br />FE384000006A.</p>
<p>eax=80090331 ebx=00000000<br />ecx=768d0175 edx=1bf364e0 esi=00000000 edi=00000000</p>
<p>eip=74b253d8 esp=254cea84<br />ebp=254ceb10 iopl=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nv up ei pl<br />nz na pe nc</p>
<p>cs=0023&nbsp; ss=002b&nbsp;<br />ds=002b&nbsp; es=002b&nbsp; fs=0053&nbsp;<br />gs=002b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />efl=00000206</p>
<p>sspicli!SspipAcquireCredentialsHandle+0xf9:</p>
<p>74b253d8<br />8945e0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />mov&nbsp;&nbsp;&nbsp;&nbsp; dword ptr [ebp-20h],eax ss:002b:254ceaf0=254ceb10</p>
<p>&nbsp;</p>
<p>0:027&gt; k</p>
<p>ChildEBP RetAddr&nbsp;</p>
<p>254ceb10 74b2dccf sspicli!SspipAcquireCredentialsHandle+0xf9<br />[d:\w7rtm\minio\security\base\lsa\security\sspiwrap.cxx @ 196]</p>
<p>254ceb68 74b3030b<br />sspicli!LsaAcquireCredentialsHandleW+0x8e [d:\w7rtm\minio\security\base\lsa\security\sspicli\lsastubs.cxx<br />@ 581]</p>
<p>254ceba4 74b3151e<br />sspicli!AcquireCredentialsHandleCommon+0xce<br />[d:\w7rtm\minio\security\base\lsa\security\sspicli\newstubs.cxx @ 592]</p>
<p>254cebd4 5d01fc86<br />sspicli!AcquireCredentialsHandleW+0x27 [d:\w7rtm\minio\security\base\lsa\security\sspicli\newstubs.cxx<br />@ 463]</p>
<p>254cec54 5d02037d<br />xceedftpbiztalk!CXwlSslSocketWrapper::GetClientCredentials+0xc9<br />[d:\bt\9359137\private\source\runtime\msg\adapters\ftp\xceedftp\winsock\xwlsslsocketwrapper.cpp<br />@ 183]</p>
<p>254cec80 5d0128dd<br />xceedftpbiztalk!CXwlSslSocketWrapper::SetupTLS+0x51<br />[d:\bt\9359137\private\source\runtime\msg\adapters\ftp\xceedftp\winsock\xwlsslsocketwrapper.cpp<br />@ 303]</p>
<p>254ced18 5d0100c5<br />xceedftpbiztalk!CXceedFtp::ConnectPerformer+0x341 [d:\bt\9359137\private\source\runtime\msg\adapters\ftp\xceedftp\activex\xceedftpperformers.cpp<br />@ 473]</p>
<p>254ced60 1be164d6<br />xceedftpbiztalk!CXceedFtp::Connect+0xf3<br />[d:\bt\9359137\private\source\runtime\msg\adapters\ftp\xceedftp\activex\xceedftpmethods.cpp<br />@ 332]</p>
<p>254cedcc 1be16309<br />DomainBoundILStubClass.IL_STUB_CLRtoCOM()+0x86</p>
<p>254cee10 1be13fe5<br />Microsoft_BizTalk_CoreAdapter!Microsoft.BizTalk.Adapter.FtpAdapter.FtpUtil.Connect(XceedFtpLib.XceedFtp,<br />System.String, System.String)+0x29<br />[d:\bt\9359137\private\source\Runtime\Msg\Adapters\Ftp\Runtime\FtpUtil.cs @<br />201]</p>
<p>254cef18 1be12ec6<br />Microsoft_BizTalk_CoreAdapter!Microsoft.BizTalk.Adapter.FtpAdapter.FtpReceiverEndpoint.EndpointTask()+0x235<br />[d:\bt\9359137\private\source\Runtime\Msg\Adapters\Ftp\Runtime\FtpReceiverEndpoint.cs<br />@ 325]</p>
<p>254cef60 1be129ba<br />Microsoft_BizTalk_CoreAdapter!Microsoft.BizTalk.Adapter.FtpAdapter.FtpReceiverEndpoint.ControlledEndpointTask()+0x56<br />[d:\bt\9359137\private\source\Runtime\Msg\Adapters\Ftp\Runtime\FtpReceiverEndpoint.cs<br />@ 251]</p>
<p>254cef8c 1be12838 Microsoft_BizTalk_BaseAdapter!Microsoft.BizTalk.Adapter.Common.SimpleTask.Start()+0x2a<br />[d:\bt\9359137\private\source\Runtime\Msg\Adapters\BaseAdapter\SimpleTask.cs @<br />45]</p>
<p>254cefb8 1be1256d<br />Microsoft_BizTalk_Scheduler_Runtime!Microsoft.BizTalk.Scheduler.TaskController.StartTask()+0x28<br />[d:\bt\9359137\private\source\Runtime\Scheduler\Runtime\TaskController.cs @<br />638]</p>
<p>254cefc4 1be1241e<br />Microsoft_BizTalk_Scheduler_Runtime!Microsoft.BizTalk.Scheduler.TaskController+StartPendingState.OnThreadAvailable(Microsoft.BizTalk.Scheduler.TaskController)+0x1d</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;</p>
<p align="left"><b>Problem Resolution</b></p>
<p align="left"><b>=================</b></p>
<p>&nbsp;</p>
<p>Please check the following registry key in your BizTalk Server box to see if there is any TLS v1 registry key been disabled, that means the value is 0. If so, please change the TLS 1.0 Client registry key value to 1, that enable TLS 1.0 for client.</p>
<p style="text-align: left;"><span style="background-color: #ffcc00;">HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS1.0\Client</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Introduction for Anxin Service Program of Microsoft APGC CSS - 微软亚太区全球技术支持中心 安心服务简介</title>
      <link>https://docs.microsoft.com/archive/blogs/asiabiztalk/introduction-for-anxin-service-program-of-microsoft-apgc-css</link>
      <pubDate>Tue, 14 Jun 2011 08:49:00 GMT</pubDate>
      <dc:creator><![CDATA[AsiaBizTalk]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/asiabiztalk/2011/06/14/introduction-for-anxin-service-program-of-microsoft-apgc-css/</guid>
      <description><![CDATA[Dear Customer,
Microsoft APGC CSS is now promoting a new customer program named Anxin...]]></description>
      <content:encoded><![CDATA[<p>Dear Customer,</p>
<p>Microsoft APGC CSS is now promoting a new customer program named Anxin Service（安心服务）.</p>
<p>Currently, this program is only open for GCR customers, so the following introduction will be written in Chinese Simplified. If any of you come from SEA or ANZ area, that also want to get more information about this Anxin Service, please feel free to drop a mail to us, and we will send you detailed&nbsp;information.</p>
<p>And we will schedule to translate all the introduction into English in the future.</p>
<p>Thanks for visiting our Blog!!!</p>
<p>=============================</p>
<div class="style9" style="margin-bottom: 10px;">2010年11月，微软特面向成长型企业用户推出微软安心服务，该服务为微软原厂提供的符合成长型企业自身需求和预算的服务模式和方案，包含升级、部署、咨询、培训等一系列的服务内容，供用户基于需求灵活选择应用IT技术提供有力保障，使客户充分享受IT投资带来的最大回报。</div>
<div class="style9">值得一提的是，除了故障排除、客户服务等常规支持外，微软安心服务更倡导预防性的主动服务等增值服务，着重前期部署，防患于未然，预防和减少问题的发生。</div>
<div class="style9">&nbsp;</div>
<div class="style9">那么，对于广大大中华区的BizTalk Server的用户，安心服务又能给大家带来什么呢？通过下面的介绍，您一定会有更深入的了解。相信我们所提供的原厂部署，咨询以及培训服务，必有一款适合您！</div>
<div class="style9">&nbsp;</div>
<div class="style9"><strong>一. 咨询服务</strong></div>
<div class="style9">&nbsp;</div>
<div class="style9">&nbsp;</div>
<div class="style9"></div>
<div class="style9"><strong>
<div class="style9"><strong>1. BizTalk Server系统架构设计&amp;评估咨询服务</strong></div>
&nbsp; </strong>
<div>&nbsp;&nbsp;&nbsp; 服务简介：由拥有丰富经验的微软BizTalk工程师根据用户应用系统软硬件需求，综合考虑高性能和高可用性要求，制定或评估BizTalk系统架构设计方案：包括主机&amp;主机实例设置，各种适配器&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 配置，跟踪系统配置，用户权限控制策略，后台数据库维护计划，应用程序部署策略等。同时提供最佳实践经验分享，帮助用户搭建起符合自身需求，高效稳健的BizTalk系统平台。</div>
</div>
<div class="style9">&nbsp;</div>
<div class="style9">&nbsp;&nbsp;&nbsp; 服务交付：BizTalk系统架构设计方案：描述根据用户应用需求定制的目标BizTalk系统架构，包括各关键BizTalk组件及相关Windows系统参数设置建议。</div>
<div class="style9">&nbsp;</div>
<div class="style9">&nbsp;</div>
<div class="style9"><strong>2. BizTalk Server 单机环境部署服务</strong></div>
<div class="style9">&nbsp;</div>
<div class="style9">
<div>&nbsp;&nbsp;&nbsp; 服务简介：协助客户部署单机BizTalk服务器平台， 包括BizTalk基本组件的安装和配置，用户权限控制，数据库的规划部署，相关后台SQL作业的配置，跟踪功能配置等。帮助用户以最快的速度拥有一套高效稳健的单机BizTalk系统平台。（不含Windows和SQL Server的安装）</div>
<div class="style9"></div>
<div>&nbsp;&nbsp;&nbsp; </div>
<div>&nbsp;&nbsp;&nbsp; 服务交付：协助客户安装和配置单机BizTalk系统；提供布署配置报告书（单机）：记录并描述当前BizTalk系统配置状态，供管理员或开发人员参考&nbsp;</div>
<div>&nbsp;</div>
<div>
<div class="style9"><strong>3. BizTalk Server 高可用性服务器组部署服务</strong></div>
<div class="style9"></div>
<div class="style9">
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; 服务简介：协助客户部署能够避免单点故障，同时具有高可用性和高性能特点的BizTalk服务器组。在分别安装配置多台BizTalk服务器的基础上，配置SSO服务集群，根据具体应用需要配置BizTalk服务集群或BizTalk多实例主机。（不含Windows和SQL Server的安装）</div>
<div class="style9"></div>
<div></div>
<div>&nbsp;&nbsp;&nbsp; </div>
<div>&nbsp;&nbsp;&nbsp; 服务交付：协助客户安装和配置多机BizTalk系统；提供布署配置报告书（多机）：记录并描述当前BizTalk系统配置状态，供管理员或开发人员参考 </div>
</div>
</div>
<div>&nbsp;</div>
<div>
<div></div>
<div>
<div class="style9"><strong>4. BizTalk Server 系统健康检查</strong></div>
<div class="style9"></div>
<div class="style9">
<div></div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; 服务简介：BizTalk系统健康检查能够在您遇到问题之前，对您的BizTalk环境做一个全面的评估。我们将通过工具收集一系列数据以及同您系统管理员的交流来评估现有的BizTalk服务器环境和日常维护是否符合要求， 是否存在常见的系统隐患，另外，还会提供解决方案和建议来修复和解除在健康检查中发现的问题</div>
<div class="style9"></div>
<div></div>
<div></div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; 服务交付：Biztalk系统健康检查报告：按优先级列举当前BizTalk系统中存在的隐患及配置调整建议</div>
</div>
</div>
</div>
<div>&nbsp;</div>
<div>
<div class="style9"><strong>5. BizTalk Server性能调优</strong></div>
<div class="style9"></div>
<div class="style9">
<div></div>
<div></div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; 服务简介：由拥有丰富经验的微软BizTalk工程师对运行在BizTalk环境中的特定应用进行全面的性能分析与评估，查找由于应用程序本身或BizTalk系统设置而导致的性能瓶颈。同时针对特定应用的特点，调节BizTalk运行时或Windows系统平台相关参数设定，充分发挥现有软硬件资源的潜力，提高目标应用的整体性能。</div>
<div class="style9"></div>
<div></div>
<div></div>
<div></div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; 服务交付：BizTalk系统性能评估报告：分析当前BizTalk系统应用的性能以及可能的瓶颈，提供相关的系统调优建议，帮助开发人员或系统管理员改进整体应用系统性能。</div>
</div>
</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>
<div class="style9"><strong>二. 培训服务</strong></div>
<div class="style9"></div>
<div class="style9"></div>
<div class="style9"></div>
<div class="style9"><strong>&nbsp;</strong>
<div>
<div class="style9"><strong>1. BizTalk Server 应用开发快速入门</strong></div>
<div class="style9"></div>
<div class="style9">
<div></div>
<div></div>
<div></div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; 服务简介：该培训让开发人员能快速了解如何开发基于BizTalk系统的应用程序，介绍如何使用Visual Studio集成开发环境开发BizTalk应用所需的核心功能模块，包括Document schema、property schema、映射、协调流程、管道&amp;管道组件、各种适配器端口配置、商业策略等。
<div class="style9"></div>
<div></div>
<div></div>
<div></div>
<div>&nbsp;</div>
<div>
<div class="style9"><strong>2. BizTalk Server AS2\EDI 解决方案介绍</strong></div>
<div class="style9"></div>
<div class="style9">
<div></div>
<div></div>
<div></div>
<div></div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; 服务简介：该培训主要介绍微软提出的基于BizTalk平台的AS2\EDI解决方案。内容包括EDI的背景及行业标准简介、EDI消息结构、BizTalk AS2\EDI解决方案架构、BizTalk EDI消息处理流程、组织解析、消息封装、AS2\EDI跟踪信息报表等。帮助相关人员迅速了解BizTalk AS2\EDI 的配置与管理</div>
<div>&nbsp;</div>
<div>
<div class="style9"><strong>3. BizTalk Server 系统架构介绍</strong></div>
<div class="style9"></div>
<div class="style9">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; 服务简介：该培训使开发人员或管理员对BizTalk 系统有一个完整清晰的了解，主要会介绍BizTalk核心的消息发布者&amp;订阅者机制、BizTalk的各个功能模块、Visual Studio集成开发环境、BizTalk管理员控制台、后台数据库及其关系以及典型应用场景展示。</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div>&nbsp;</div>
<div>
<div class="style9"><strong>4. BizTalk Server 应用程序部署与管理</strong></div>
<div class="style9"></div>
<div class="style9">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div>&nbsp;&nbsp;&nbsp; 服务简介：该培训让系统管理员了解单机或高可用性BizTalk环境中应用程序的安装和导入，绑定信息的导出导入，使用BizTalk管理控制台灵活管理应用及其组件，常用的应用异常处理方法及异常原因排查方法。</div>
</div>
</div>
<div>&nbsp;</div>
<div>
<div>
<div class="style9"><strong>5. BizTalk Server 系统备份与容灾</strong></div>
<div class="style9"></div>
<div class="style9">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div>&nbsp;&nbsp;&nbsp; 服务简介：该培训主要讲解如何备份BizTalk运行时服务器、后台数据库以及如何使用备份快速恢复服务。包括用于备份BizTalk数据库的SQL作业，BizTalk log shipping, BizTalk后台数据库迁移，BizTalk运行时服务器备份及恢复。</div>
</div>
</div>
<div></div>
&nbsp;</div>
<div>
<div class="style9"><strong>6. BizTalk Server 系统管理员入门</strong></div>
<div class="style9"></div>
<div class="style9">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div>&nbsp;&nbsp;&nbsp; 服务简介：该培训使管理员快速掌握BizTalk系统的日常管理和维护方法，主要会介绍BizTalk的各个功能模块、BizTalk管理员控制台、主机&amp;主机实例设置，各种适配器配置，跟踪系统配置，用户权限控制策略，后台数据库维护计划以及常见异常处理方法等。</div>
</div>
</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>您也可以登入安心服务的官方主页查询更详细的信息，如果有任何疑问或者需求，请随时通过邮件的形式联系我们！</div>
<div></div>
<div></div>
<div><strong>微软安心服务官方主页</strong></div>
<div><a href="http://support.microsoft.com/gp/anxin/zh-cn">http://support.microsoft.com/gp/anxin/zh-cn</a></div>
<div></div>
<div></div>
<div><strong>微软安心服务BizTalk Server服务项目介绍</strong></div>
<div><a href="http://support.microsoft.com/gp/anxin_biztalk/zh-cn">http://support.microsoft.com/gp/anxin_biztalk/zh-cn</a></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>"Object reference not set to an instance of an object” (NullReference Exception) was intermittently reported when executing a customized receiving pipeline when de-batch an incoming message</title>
      <link>https://docs.microsoft.com/archive/blogs/asiabiztalk/object-reference-not-set-to-an-instance-of-an-object-nullreference-exception-was-intermittently-reported-when-executing-a-customized-receiving-pipeline-when-de-batch-an-incoming-message</link>
      <pubDate>Mon, 02 May 2011 19:29:23 GMT</pubDate>
      <dc:creator><![CDATA[AsiaBizTalk]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/asiabiztalk/2011/05/02/object-reference-not-set-to-an-instance-of-an-object-nullreference-exception-was-intermittently-reported-when-executing-a-customized-receiving-pipeline-when-de-batch-an-incoming-message/</guid>
      <description><![CDATA[Problem:
========
&ldquo;Object reference not set to an instance of an object&rdquo; was...]]></description>
      <content:encoded><![CDATA[<p>Problem:</p>
<p>========</p>
<p>&ldquo;Object reference not set to an instance of an object&rdquo; was intermittently reported when executing a customized receiving pipeline when de-batch an incoming message.</p>
<p>Analysis:</p>
<p>========</p>
<p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The error was caused by the following first chance Access Violation.</p>
<p>&nbsp;</p>
<p>(2fac.347c): Access violation - code c0000005 (first/second chance not available)</p>
<p>eax=1e0a7a40 ebx=1e09d858 ecx=00000000 edx=00078272 esi=1e09c998 edi=100d455c</p>
<p>eip=08e16ee5 esp=05daf880 ebp=05daf8c8 iopl=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nv up ei ng nz na pe cy</p>
<p>cs=0023&nbsp; ss=002b&nbsp; ds=002b&nbsp; es=002b&nbsp; fs=0053&nbsp; gs=002b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; efl=00010287</p>
<p>08e16ee5 3909&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmp&nbsp;&nbsp;&nbsp;&nbsp; dword ptr [ecx],ecx&nbsp; ds:002b:00000000=????????</p>
<p>Microsoft_BizTalk_Pipeline_Components!Microsoft.BizTalk.Component.XmlDasmReader.get_MessageContext()</p>
<p>Microsoft_BizTalk_Pipeline_Components!Microsoft.BizTalk.Component.XmlDasmComp.GetNext2(Microsoft.BizTalk.Component.Interop.IPipelineContext)</p>
<p>Microsoft_BizTalk_Pipeline_Components!Microsoft.BizTalk.Component.XmlDasmComp.GetNext(Microsoft.BizTalk.Component.Interop.IPipelineContext)</p>
<p>Microsoft_BizTalk_Messaging!Microsoft.BizTalk.Internal.ComponentWrapper.GetNext(Microsoft.BizTalk.Component.Interop.IPipelineContext)</p>
<p>Microsoft_BizTalk_Pipeline!Microsoft.BizTalk.PipelineOM.DisassemblerComponent.GetNext(Microsoft.BizTalk.Component.Interop.IPipelineContext)</p>
<p>Microsoft_BizTalk_Pipeline!Microsoft.BizTalk.PipelineOM.DisassemblingParserStage.GetNext(Microsoft.BizTalk.PipelineOM.IBTMPipelineContext)</p>
<p>Microsoft_BizTalk_Pipeline!Microsoft.BizTalk.PipelineOM.ReceivePipeline.GetNext()</p>
<p>&nbsp;</p>
<p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The AV occurred because the field m_npStk of the object XmlDasmReader is NULL.</p>
<p>0:038&gt; !u @eip</p>
<p>Normal JIT generated code</p>
<p>Microsoft.BizTalk.Component.XmlDasmReader.get_MessageContext()</p>
<p>Begin 08e16ee0, size 12</p>
<p>08e16ee0 8bc1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; eax,ecx</p>
<p>08e16ee2 8b4820&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; ecx,dword ptr [eax+20h]</p>
<p>&gt;&gt;&gt; 08e16ee5 3909&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmp&nbsp;&nbsp;&nbsp;&nbsp; dword ptr [ecx],ecx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>// Access Violation here since ecx is zero, ecx is coming from eax+20</b></p>
<p>08e16ee7 e844dbffff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call&nbsp;&nbsp;&nbsp; Microsoft_BizTalk_Pipeline_Components!Microsoft.BizTalk.Component.NodeProcessorStack.get_Current()</p>
<p>08e16eec 8bd0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; edx,eax</p>
<p>08e16eee 8b4208&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; eax,dword ptr [edx+8]</p>
<p>08e16ef1 c3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ret</p>
<p>&nbsp;</p>
<p>0:038&gt; !do @eax</p>
<p>Name: Microsoft.BizTalk.Component.XmlDasmReader</p>
<p>&hellip;.</p>
<p>7933291c&nbsp; 40001e2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1c ...ections.ArrayList&nbsp; 0 instance 00000000 m_envelopes</p>
<p>080c923c&nbsp; 40001e3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20 ...odeProcessorStack&nbsp; 0 instance 00000000 m_npStk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<b>// eax+20 is the field m_npStk(NodeProcessorStack) of the object Microsoft.BizTalk.Component.XmlDasmReader</b></p>
<p>793308ec&nbsp; 40001e4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.String&nbsp; 0 instance 1e0aafd0 m_docType</p>
<p>7933291c&nbsp; 40001e5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 28 ...ections.ArrayList&nbsp; 0 instance 00000000 propertyPromotionList</p>
<p>....</p>
<p>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The field m_npStk is set to NULL because the&nbsp; XmlDasmReader.Close() method is called by the object method ReadOnlySeekableStream.Finalize() when it is Disposed by GC.</p>
<p>microsoft_biztalk_pipeline_components!Microsoft.BizTalk.Component.XmlDasmReader.Close()</p>
<p>microsoft_biztalk_streaming!Microsoft.BizTalk.Streaming.XmlTranslatorStream.Close()</p>
<p>microsoft_biztalk_streaming!Microsoft.BizTalk.Streaming.ReadOnlySeekableStream.Cleanup()</p>
<p>microsoft_biztalk_streaming!Microsoft.BizTalk.Streaming.ReadOnlySeekableStream.Finalize()</p>
<p>mscorwks!FastCallFinalize</p>
<p>mscorwks!MethodTable::CallFinalizer</p>
<p>mscorwks!SVR::CallFinalizer</p>
<p>mscorwks!SVR::DoOneFinalization</p>
<p>mscorwks!SVR::FinalizeAllObjects</p>
<p>mscorwks!SVR::GCHeap::FinalizerThreadWorker</p>
<p>&nbsp;</p>
<p>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The object ReadOnlySeekableStream was disposed above was created by the &nbsp;customized pipeline component MessageValidator used in the pipeline. </p>
<p>microsoft_biztalk_streaming!Microsoft.BizTalk.Streaming.ReadOnlySeekableStream..ctor(System.IO.Stream)</p>
<p>xxxx_xxxx_xxxx_xxxx!xxxx.xxxx.xxxx.xxxx.xxxxx (System.IO.Stream)</p>
<p>xxxx_xxxx_xxxx_xxxx!xxxx.xxxx.xxxx.xxxx.MessageValidator.Execute(Microsoft.BizTalk.Component.Interop.IPipelineContext, Microsoft.BizTalk.Message.Interop.IBaseMessage)</p>
<p>microsoft_biztalk_messaging!Microsoft.BizTalk.Internal.ComponentWrapper.Execute(Microsoft.BizTalk.Component.Interop.IPipelineContext, Microsoft.BizTalk.Message.Interop.IBaseMessage)</p>
<p>microsoft_biztalk_pipeline!Microsoft.BizTalk.PipelineOM.SimpleComponent.Execute(Microsoft.BizTalk.Component.Interop.IPipelineContext, Microsoft.BizTalk.Message.Interop.IBaseMessage)</p>
<p>microsoft_biztalk_pipeline!Microsoft.BizTalk.PipelineOM.SimpleStage.Execute(Microsoft.BizTalk.PipelineOM.IBTMPipelineContext, Microsoft.BizTalk.Message.Interop.IBaseMessage, Int32)</p>
<p>114af168 1c7f38c6 microsoft_biztalk_pipeline!Microsoft.BizTalk.PipelineOM.Pipeline.Execute(Int32, Int32, Microsoft.BizTalk.Message.Interop.IBaseMessage)</p>
<p>&hellip;.</p>
<p>&nbsp;</p>
<p>5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The problem can be reproduced using a simple pipeline component&nbsp; as the below (at Validate stage) + the default XML receiving component(at Disassemble stage) when&nbsp; de-batch an incoming XML message.</p>
<p>&hellip;.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public IBaseMessage Execute(IPipelineContext pc, IBaseMessage inmsg)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IBaseMessagePart bodyPart = inmsg.BodyPart;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (bodyPart!=null)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Stream originalStrm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = bodyPart.GetOriginalDataStream();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Stream strm = null;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (originalStrm != null)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = new ReadOnlySeekableStream(originalStrm);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bodyPart.Data&nbsp;&nbsp;&nbsp; = strm;</p>
<p><b>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pc.ResourceTracker.AddResource( strm );&nbsp; //&nbsp; comments this line, the problem can be reproduced easily, the problem will be fixed by remaining the line.</b></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return inmsg;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&hellip;.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Solution:</p>
<p>==========</p>
<p>This is the coding &nbsp;flaw in the developed pipeline component(MessageValidator in this case), please refer the description from the below document. (it is very good article for Streaming Pipeline component development).</p>
<p><a href="http://download.microsoft.com/download/0/7/3/073B05EF-E629-4425-9851-295B98CDE699/DevelopingAStreamingPipelineComponent.docx">http://download.microsoft.com/download/0/7/3/073B05EF-E629-4425-9851-295B98CDE699/DevelopingAStreamingPipelineComponent.docx</a></p>
<p>&hellip;&hellip;</p>
<p>Before returning the message back to the pipeline in line 18, the StreamWriter object that was created is added to the context&rsquo;s ResourceTracker (line 15). This ensures the .NET Garbage Collector does not dispose of this object and the stream it is using. If it did, the underlying stream would have been closed and disposed of also ll (the behaviour of the StreamWriter Dispose() method) and would not be available for other component&rsquo;s or indeed BizTalk Server itself. Equally it also means that BizTalk Server will ensure disposing of this object once the processing of the message is complete. </p>
<p>&hellip;.</p>
<p><b>To add the ResourceTracker.AddResource call in the pipeline component and let the BizTalk engine managing the lifetime of the new created Stream object for you</b>.</p>]]></content:encoded>
    </item>
    <item>
      <title>BizTalk Server 2009 CU2 is released on March 18th</title>
      <link>https://docs.microsoft.com/archive/blogs/asiabiztalk/biztalk-server-2009-cu2-is-released-on-march-18th</link>
      <pubDate>Mon, 02 May 2011 19:25:04 GMT</pubDate>
      <dc:creator><![CDATA[AsiaBizTalk]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/asiabiztalk/2011/05/02/biztalk-server-2009-cu2-is-released-on-march-18th/</guid>
      <description><![CDATA[Cumulative update package 2 for BizTalk Server 2009
http://support.microsoft.com/kb/2497794 ]]></description>
      <content:encoded><![CDATA[<p>Cumulative update package 2 for BizTalk Server 2009</p>
<p><a href="http://support.microsoft.com/kb/2497794">http://support.microsoft.com/kb/2497794</a> </p>]]></content:encoded>
    </item>
    <item>
      <title>PSSDIAGForBizTalk Error enumerating virtual servers</title>
      <link>https://docs.microsoft.com/archive/blogs/asiabiztalk/pssdiagforbiztalk-error-enumerating-virtual-servers</link>
      <pubDate>Sun, 06 Mar 2011 19:31:00 GMT</pubDate>
      <dc:creator><![CDATA[AsiaBizTalk]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/asiabiztalk/2011/03/06/pssdiagforbiztalk-error-enumerating-virtual-servers/</guid>
      <description><![CDATA[&nbsp;
Problem
========
When running PSSDiagForBizTalk in a BizTalk cluster which is
not SQL...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<p class="MsoNormal"><strong>Problem</strong></p>
<p class="MsoNormal"><strong>========</strong></p>
<p class="MsoNormal">When running PSSDiagForBizTalk in a BizTalk cluster which is
not SQL cluster(no SQL server resource in the cluster), the following error is
reported:<o:p></o:p></p>
<p class="MsoNormal">2011/02/25 15:14:35.48 PSSDIAG Error enumerating virtual
servers.&nbsp; Is your SQL Server instance clustered? <o:p></o:p></p>
<p class="MsoNormal">2011/02/25 15:14:35.48 PSSDIAG Error retrieving servers from
the configuration file.&nbsp; Aborting.&nbsp; Please see Microsoft Knowledge
Base article 906532 for more information<o:p></o:p></p>
<p class="MsoNormal"><strong>Cause</strong></p>
<p class="MsoNormal"><strong>========</strong></p>
<p class="MsoNormal">PSSDiagForBizTalk tool tries to retrieve the SQL server
cluster resource from the BizTalk cluster and it fails with the above error.<o:p></o:p></p>
<p class="MsoNormal"><strong>Solution</strong></p>
<p class="MsoNormal"><strong>========</strong></p>
<p class="MsoNormal">Open pssdiag.ini, change the section [.] to
[BizTalk_Machine_NetBios_Name]. For example, one node of the BizTalk cluster
netbios name is birdgun, the section could be changed to [birdgun] when run the
tool on this node. This makes the tool skips the steps to enumerate the cluster
resources and continue to run.<o:p></o:p></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>How to remove invalid character in incoming XML message using custom pipeline component</title>
      <link>https://docs.microsoft.com/archive/blogs/asiabiztalk/how-to-remove-invalid-character-in-incoming-xml-message-using-custom-pipeline-component</link>
      <pubDate>Tue, 28 Dec 2010 00:00:36 GMT</pubDate>
      <dc:creator><![CDATA[AsiaBizTalk]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/asiabiztalk/2010/12/28/how-to-remove-invalid-character-in-incoming-xml-message-using-custom-pipeline-component/</guid>
      <description><![CDATA[&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;...]]></description>
      <content:encoded><![CDATA[<p class="MsoNormal"><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;</span></span></span></p>
<p class="MsoNormal"><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">NOTE: This article is migrated from Blog AsiaTech</span></span></span></p>
<p class="MsoNormal"><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">Date: 2010-6-16 3:49 PM</span></span></span></p>
<p class="MsoNormal"><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">Orignal URL: <a href="http://blogs.msdn.com/b/asiatech/archive/2010/06/16/remove-invalid-character-in-incoming-xml-message-using-custom-pipeline-component.aspx">http://blogs.msdn.com/b/asiatech/archive/2010/06/16/remove-invalid-character-in-incoming-xml-message-using-custom-pipeline-component.aspx</a></span></span></span></p>
<p class="MsoNormal"><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;<br /></span></span></span></p>
<p class="MsoNormal"><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">BizTalk server is usually used as message bus for different platforms and applications. In most scenarios, BizTalk stores and processes messages in XML format. Internally, it calls .NET XML library to do the job. Thus it follows W3C XML standard to validate message and check encoding. <o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">However, in some scenarios,<span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>messages from different platforms or applications didn&rsquo;t strictly follow W3C XML standard and may include invalid characters. These characters may lead to BizTalk message processing failure in various stages, for example, XML Receive pipelines, message mapping. The below is one sample error message you may find in BizTalk event log:<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><o:p><span style="font-family: Calibri; font-size: small;"><span style="font-size: x-small;">&nbsp;</span></span></o:p></p>
<p class="MsoNormal"><i style="mso-bidi-font-style: normal;"><span style="font-size: small;"><span style="font-size: x-small;"><span lang="ZH-CN" style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">&ldquo;</span><span style="font-family: Calibri;">Unable to read the stream produced by the pipeline.<span style="mso-spacerun: yes;">&nbsp; </span>Details: '', hexadecimal value 0x0F, is an invalid character.<o:p></o:p></span></span></span></i></p>
<p class="MsoNormal"><o:p><span style="font-family: Calibri; font-size: small;"><span style="font-size: x-small;">&nbsp;</span></span></o:p></p>
<p class="MsoNormal"><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">*Note: According to W3C, XML processors should accept any character in following range <o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">For more detail, please refer to:<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><a href="http://www.w3.org/TR/REC-xml/#charsets"><span style="font-family: Calibri; font-size: small;"><span style="color: #0066dd; font-size: x-small;">http://www.w3.org/TR/REC-xml/#charsets</span></span></a><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;"> <o:p></o:p></span></span></span></p>
<p class="MsoNormal"><o:p><span style="font-family: Calibri; font-size: small;"><span style="font-size: x-small;">&nbsp;</span></span></o:p></p>
<p class="MsoNormal"><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">Generally speaking, the formal way of solving this problem is to fix the source system and prevent it from sending out invalid characters in XML message. Unfortunately, this way is not always available because the source system may not under our control. So it may be hard to persuade the owner to spend their money solving the problem. Writing a custom pipeline to remove the invalid characters before BizTalk processing the message would be one workaround in this scenario.<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">The below is the sample implementation for Execute interface of pipeline component. Here are the several stages in this sample:<o:p></o:p></span></span></span></p>
<p class="MsoListParagraphCxSpFirst"><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font-size: small;"><span style="font-size: x-small;">&middot;</span></span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">Read original message stream into text<o:p></o:p></span></span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font-size: small;"><span style="font-size: x-small;">&middot;</span></span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">Use Regular expression to remove invalid characters<o:p></o:p></span></span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font-size: small;"><span style="font-size: x-small;">&middot;</span></span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri;"><span style="font-size: small;"><span style="font-size: x-small;">Add Unicode Byte Order Mark <o:p></o:p></span></span></span></p>
<p class="MsoListParagraphCxSpLast"><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font-size: small;"><span style="font-size: x-small;">&middot;</span></span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;">Assign the new stream to message<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;">Note: Here just a sample of using Unicode encoding. User can using UTF-8 instead or even implement design time support to switch between different supported encoding format.<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><o:p><span style="font-family: Calibri; font-size: small;"><span style="font-size: x-small;">&nbsp;</span></span></o:p></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public IBaseMessage Execute(IPipelineContext pc, IBaseMessage inmsg)<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>string oldXMLText,newXMLText;<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Stream newStr;<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>IBaseMessagePart bodyPart = inmsg.BodyPart;<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if (bodyPart != null)<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>using (StreamReader sr = new StreamReader(bodyPart.GetOriginalDataStream()))<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//Remove Invalid Character<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>oldXMLText = sr.ReadToEnd();<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>string re = @"[^\u0009\u000A\u000D\u0020-\uD7FF\uE000-\uFFFD\u10000-\u10FFFF]";<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>newXMLText = System.Text.RegularExpressions.Regex.Replace(oldXMLText, re, "");<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//Add Byte Order Mark<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>byte[] b = new byte[newXMLText.Length * 2 + 2];<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>b[0] = 0xFF;<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>b[1] = 0xFE;<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>byte[] textb = System.Text.UnicodeEncoding.Unicode.GetBytes(newXMLText);<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for (int i = 0; i &lt; textb.Length; i++)<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>b[i + 2] = textb[i];<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>newStr = new MemoryStream(b);<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>newStr.Flush();<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bodyPart.Data = newStr;<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>pc.ResourceTracker.AddResource(newStr);<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return inmsg;<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} <o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;">Best Regards,<o:p></o:p></span></span></span></p>
<p class="MsoNormal"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="font-size: x-small;">Bryan Yang<o:p></o:p></span></span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>How does BizTalk detect if a host instance is dead in BTS2K6, 2K6R2 and 2K9?</title>
      <link>https://docs.microsoft.com/archive/blogs/asiabiztalk/how-does-biztalk-detect-if-a-host-instance-is-dead-in-bts2k6-2k6r2-and-2k9</link>
      <pubDate>Mon, 27 Dec 2010 23:57:35 GMT</pubDate>
      <dc:creator><![CDATA[AsiaBizTalk]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/asiabiztalk/2010/12/27/how-does-biztalk-detect-if-a-host-instance-is-dead-in-bts2k6-2k6r2-and-2k9/</guid>
      <description><![CDATA[&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;</span></p>
<p><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">NOTE: This article is migrated from Blog AsiaTech</span></p>
<p><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Date: 2009-11-25 5:39 PM</span></p>
<p><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Orignal URL: <a href="http://blogs.msdn.com/b/asiatech/archive/2009/11/25/how-does-biztalk-detect-if-a-host-instance-is-dead-in-bts2k6-2k6r2-and-2k9.aspx">http://blogs.msdn.com/b/asiatech/archive/2009/11/25/how-does-biztalk-detect-if-a-host-instance-is-dead-in-bts2k6-2k6r2-and-2k9.aspx</a></span></p>
<p><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;<br /></span></p>
<p><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">This job is done by the cooperation between the front end BizTalk host instance process and the backend BizTalk SQL job MessageBox_DeadProcesses_Cleanup_BizTalkMsgBoxDb.&nbsp;</span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-indent: -0.25in; margin: 0in 0in 0pt 0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><span style="mso-list: Ignore;">1.<span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">When a BizTalk host instance is started, it will call the store procedure bts_ProcessHeartbeat_&lt;HostName&gt; once as the below. <o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">exec [dbo].[bts_ProcessHeartbeat_&lt;HostName&gt;] @uidProcessID=NULL,@dwCommand=1,@nHeartbeatInterval=60<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Here @dwCommand=1 means Process Startup.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-indent: -0.25in; margin: 0in 0in 0pt 0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><span style="mso-list: Ignore;">2.<span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">When a BizTalk host instance is stopped, it will call the same store procedure bts_ProcessHeartbeat_&lt;HostName&gt; once again as the below. <o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">exec [dbo].[bts_ProcessHeartbeat_&lt;HostName&gt;] @uidProcessID=NULL,@dwCommand=2,@nHeartbeatInterval=60<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Here @dwCommand=2 means Process Shutdown.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-indent: -0.25in; margin: 0in 0in 0pt 0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><span style="mso-list: Ignore;">3.<span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Look at the code of the store procedure bts_ProcessHeartbeat_&lt;HostName&gt;, could see the <span style="mso-no-proof: yes;">int_ProcessCleanup_&lt;HostName&gt; will be called if </span>dwCommand=1(Process Startup) or dwCommand=2(Process Shutdown). The store procedure <span style="mso-no-proof: yes;">int_ProcessCleanup_&lt;HostName&gt; is used internally to clean up the records related with the host instance process and release all messages and service instances which are locked by this process.</span></span></p>
<p class="MsoNormal" style="text-indent: -0.25in; margin: 0in 0in 0pt 0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><span style="mso-no-proof: yes;"></span><o:p></o:p></span>&nbsp;</p>
<p class="MsoNormal" style="text-indent: -0.25in; margin: 0in 0in 0pt 0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><span style="mso-list: Ignore;">4.<span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;">It is easy to understand why int_ProcessCleanup_&lt;HostName&gt; </span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">is called when a host instance is shutdown, the messages and service instances locked by the host instance can be freed before the shutdown so they can be picked up by the same restarted host instance again or they can be picked up by other host instances which are still running in a multiple boxes BizTalk environment.</span></p>
<p class="MsoNormal" style="text-indent: -0.25in; margin: 0in 0in 0pt 0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p></o:p></span>&nbsp;</p>
<p class="MsoNormal" style="text-indent: -0.25in; margin: 0in 0in 0pt 0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><span style="mso-list: Ignore;">5.<span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">The questions is why <span style="mso-no-proof: yes;">int_ProcessCleanup_&lt;HostName&gt;</span> is also called when a host instance is startup if the locked messages and services instances were already freed by the same SP when shutdown? Yes, it is redundant if the same SP was already called when the instance shutdown normally, but the problem is that the process could be terminated or crashed unexpectedly without calling the SP, You can see that abnormal shutdown easily by killing a host process, the SP bts_ProcessHeartbeat_&lt;HostName&gt; with the dwCommand=2 is not called if the host process is killed by the command &ldquo;kill /f&rdquo;. As we can&rsquo;t guarantee the internal cleanup SP is already called before the host instance is started, to call the internal cleanup SP again at the startup is the good choice although it is redundant some times.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Another question is raised at this point, if a host instance process is totally hang or dead there, or it is just crashed or terminated unexpectedly without restarting, who can help to detect the situation and release these locked messages and service instances? How? Let&rsquo;s continue.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-indent: -0.25in; margin: 0in 0in 0pt 0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><span style="mso-list: Ignore;">6.<span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">In each running BizTalk host instance, you can see one thread as the below.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">0:016&gt; kc<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">ntdll!NtWaitForSingleObject<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">kernel32!WaitForSingleObjectEx<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">kernel32!WaitForSingleObject<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">BTSMessageAgent!CAdminCacheRefresh::OnCall<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">BTSMessageAgent!CThreadPoolWrapper::ThreadWorker<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">ntdll!RtlpWorkerCallout<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">ntdll!RtlpExecuteWorkerRequest<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">ntdll!RtlpApcCallout<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">ntdll!RtlpWorkerThread<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">kernel32!BaseThreadStart<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">7. The thread calls the store procedure bts_ProcessHeartbeat_&lt;HostName&gt;<span style="mso-spacerun: yes;">&nbsp; </span>with @dwCommand=0 every 60 seconds by default. The interval can be modified through the column ConfigurationCacheRefreshInterval of the table adm_Group in BizTalkMGMTDb or through the settings of the BizTalk group in BizTalk admin UI.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">&hellip;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">exec [dbo].[bts_ProcessHeartbeat_Newhost] @uidProcessID=NULL,@dwCommand=0,@nHeartbeatInterval=60<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">&hellip;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Here @dwCommand=0 means Process Live.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">8. Look at the code of the store procedure bts_ProcessHeartbeat_&lt;HostName&gt;, the internal SP <span style="mso-no-proof: yes;">int_ProcessCleanup_&lt;HostName&gt; will not be called if </span>dwCommand=0(Process Live). The bts_ProcessHeartbeat_&lt;HostName&gt; will only update a record or insert a new record if there is no existing one in the table <span style="mso-no-proof: yes;">ProcessHeartbeats in BizTalkMsgBoxDb for the host instance.</span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">9. Let&rsquo;s look at the record in the table <span style="mso-no-proof: yes;">ProcessHeartbeats and see what it is look like.</span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p>&nbsp;</p>
<table cellpadding="0" border="1" class="MsoNormalTable" style="width: 603px; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-cellspacing: 1.5pt; border: windowtext 1pt solid;">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid; padding: 0.75pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">uidProcessID<o:p></o:p></span></p>
</td>
<td style="background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid; padding: 0.75pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">nvcApplicatioName<o:p></o:p></span></p>
</td>
<td style="background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid; padding: 0.75pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">dtCreationTime<o:p></o:p></span></p>
</td>
<td style="background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid; padding: 0.75pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">dtLastHeartbeatTime<o:p></o:p></span></p>
</td>
<td width="142" style="background-color: transparent; width: 106.85pt; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid; padding: 0.75pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">dtLastHeartbeatTime<o:p></o:p></span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1; mso-yfti-lastrow: yes;">
<td style="background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid; padding: 0.75pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">4d50992e-2ae1-4bbd-9d61-b712b052b99c<o:p></o:p></span></p>
</td>
<td style="background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid; padding: 0.75pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">BizTalkServerApplication<o:p></o:p></span></p>
</td>
<td style="background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid; padding: 0.75pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">11/25/2009 4:52:44 AM<o:p></o:p></span></p>
</td>
<td style="background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid; padding: 0.75pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">11/25/2009 4:52:44 AM<o:p></o:p></span></p>
</td>
<td width="142" style="background-color: transparent; width: 106.85pt; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid; padding: 0.75pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">11/25/2009 5:02:44 AM<o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;">uidProcessID is the unique GUID for each host instance. You can get the uidProcessID for a host instance by query the UniqueId column of the table adm_HostInstance in BizTalkMGMTDb. You also can get the uidProcessID for a host instance by checking the service property &ldquo;Path to Executable&rdquo; of the corresponding BizTalk service in Windows Service Control Manager on a BizTalk box. For example, the following is the &ldquo;Path to Executable&rdquo; setting for my "BizTalkServerApplication" in my BizTalk testing box. You can see the ID is after the command line option &ldquo;-btsapp&rdquo;.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;">"C:\Program Files (x86)\Microsoft BizTalk Server 2006\BTSNTSvc.exe" -group "BizTalk Group" -name "BizTalkServerApplication" -btsapp "{4D50992E-2AE1-4BBD-9D61-B712B052B99C}"<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;">You can note that the </span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">dtNextHeartbeatTime is about equal to (dtLastHeartbeatTime+10*H<span style="mso-no-proof: yes;">eartbeatInterval). Since the default </span>H<span style="mso-no-proof: yes;">eartbeatInterval is about 60 seconds by default(we mentioned how to modify that interval at the above), the </span>dtNextHeartbeatTime is about 10 minutes after the dtLastHeartbeatTime by default. Of course if the H<span style="mso-no-proof: yes;">eartbeatInterval is modified to 30 seconds, then the </span>dtNextHeartbeatTime would be 5 minutes after the dtLastHeartbeatTime<span style="mso-no-proof: yes;">.<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;">10. Normally the record for a specified host instance in the table ProcessHeartbeat is updated every [</span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">H<span style="mso-no-proof: yes;">eartbeatInterval] seconds through the SP </span>bts_ProcessHeartbeat_&lt;HostName&gt; <span style="mso-no-proof: yes;">by the running host instance process. <o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;">11. Take a look at the SQL job </span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">MessageBox_DeadProcesses_Cleanup_BizTalkMsgBoxDb, it is configured <span style="color: black;">to execute the store procedure <span style="mso-no-proof: yes;">bts_CleanupDeadProcesses every minute. <o:p></o:p></span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;">12. Look at the code of the SP bts_CleanupDeadProcesses, it is simply go through the table ProcessHeartbeats and check if there is a host instance which </span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">dtNextHeartbeatTime is older than the current time. If there is, which means we already lost 10 heartbeats at least from this host instance, this host instance is then considered as dead and the store procedure i<span style="mso-no-proof: yes;">nt_ProcessCleanup_&lt;HostName&gt; for that instance is called by the SQL job to clean up the records related with the host instance process and release all messages and service instances which are locked by the process.<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">If this SQL job is disabled or get a problem when it is running, BizTalk will lost the capability to detect &ldquo;dead&rdquo; of a host instance.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: green; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;">Regards,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;">XiaoDong Zhu<o:p></o:p></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Unable to suspend or terminate active service instance in Biztalk</title>
      <link>https://docs.microsoft.com/archive/blogs/asiabiztalk/unable-to-suspend-or-terminate-active-service-instance-in-biztalk</link>
      <pubDate>Mon, 27 Dec 2010 23:54:28 GMT</pubDate>
      <dc:creator><![CDATA[AsiaBizTalk]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/asiabiztalk/2010/12/27/unable-to-suspend-or-terminate-active-service-instance-in-biztalk/</guid>
      <description><![CDATA[&nbsp;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&g...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: Times New Roman; font-size: small;">&nbsp;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;</span></p>
<p><span style="font-family: Times New Roman; font-size: small;">NOTE: This article is migrated from Blog AsiaTech</span></p>
<p><span style="font-family: Times New Roman; font-size: small;">Date: 2009-11-25 10:24 AM</span></p>
<p><span style="font-family: Times New Roman; font-size: small;">Orignal URL: <a href="http://blogs.msdn.com/b/asiatech/archive/2009/11/25/unable-to-suspend-or-terminate-active-service-instance-in-biztalk.aspx">http://blogs.msdn.com/b/asiatech/archive/2009/11/25/unable-to-suspend-or-terminate-active-service-instance-in-biztalk.aspx</a></span></p>
<p><span style="font-family: Times New Roman; font-size: small;">&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;<br /></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Symptom<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">When try to suspend or terminate a active service instance, the instance can not be suspended or terminated for a long time, it keeps active with Pending Job of the instance is set to Suspend or Terminate<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Analysis<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">A service instance is in Active status means that it is still actively running in a host instance and hasn&rsquo;t reached the next persistence point. Suspend and Terminate operations are designed as operation which will only be executed at the next persistable point. The Suspend or Terminate operation will be put into the pending operation table when the target service instance is in Active status. Please note BizTalk only hold one pending operation for a single instance. The instance will keep Active status with the queued pending operation until the next persistence point is reached. Let&rsquo;s use a simple orchestration example to demo the behavior.<o:p></o:p></span></p>
<p><img height="272" width="219" src="http://k7p9aa.blu.livefilestore.com/y1pMph9QbZqXzMv7Dy5H-bJsziXKUi2-lR8GUV36Z-TaUyUryUE3ltCmP0NjkuwCzCcEqL9nF8ULwkouJ4cMLr7yHG1x2KpfWH0/biztalk1.JPG" alt="biztalk1.JPG" title="biztalk1.JPG" style="width: 219px; height: 272px;" /></p>
<p><img height="172" width="795" src="http://k7p9aa.blu.livefilestore.com/y1p6YNQfvAAIdvUyr7NIjnqH3I3nsBYjASb9ATVrD3hs9ZbwwESj3RE6y6hEv1aidbJzCJTCK2qKvCy-VtFKOzmiT11bkWe0L7z/biztalk2.JPG" alt="biztalk2.jpg" title="biztalk2.jpg" style="width: 721px; height: 139px;" /></p>
<p>&nbsp;</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">The code is in Expression_1 is as the below which is used to simulate long time processing in a host instance or hang in a host instance.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><b style="mso-bidi-font-weight: normal;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-bidi-font-family: 'Courier New'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-no-proof: yes;">System.Threading.Thread.Sleep(5*60000);</span></b><b style="mso-bidi-font-weight: normal;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">When drop a testing message to activate the above simple orchestration, it will keep Active status for about 5 minutes and then an output message will be sent out. If try to suspend the active instance when the instance is sleeping in the host instance,<span style="mso-spacerun: yes;">&nbsp; </span>the instance will keep in Active status for a quite while with Pending Job is set to Suspend until the next persistence point - send shape is reached. One interesting thing is that the orchestration instance will be started from the last persistence point to continue the execution if the running host instance is restarted, our simple orchestration will start from the beginning to re-execute the whole orchestration code again if the host instance is restarted during System.Threading.Thread.Sleep(),we will see the instance will keep Active status with the pending operation Suspend for another 5 minutes. Now we got a problem, If the code in the expression shape is changed as the below to simulate a real hang situation.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><b style="mso-bidi-font-weight: normal;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">while(1==1){System.Threading.Thread.Sleep(5*60000);}<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">We will find we can&rsquo;t suspend the Active instance. The orchestration instance will keep Active with the pending operation Suspend forever even if the running host instance is restarted in BTS 2K6 and 2K6R2.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">The ways to handle a long time active or hang instance as the above <o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">1.<span style="mso-spacerun: yes;">&nbsp; </span>The format way should be to find where is the instance active or hang. The HAT debugging or a hang dump file for the running host instance can be used to find out where the instance processing is blocked. If the processing block or the hang can be fixed, then the instance can quickly move to the next persistable point, the pending operation or the other operations can get a chance to execute.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">2. If you don&rsquo;t want to spend the time to figure out where the blocking is and just want to simply clean out the instance from the MessageBox, use the tool Terminator to terminate these instance hardly. You can download the Terminator from the below link. The following is the captured screen for Terminate Instance (Hard) for the reference.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><a href="http://blogs.msdn.com/biztalkcpr/pages/biztalk-terminator-download-install-info.aspx"><span style="color: #0066dd;">http://blogs.msdn.com/biztalkcpr/pages/biztalk-terminator-download-install-info.aspx</span></a><o:p></o:p></span></p>
<p><span style="color: #0066dd;"><img height="506" width="738" src="http://k7p9aa.blu.livefilestore.com/y1p7Xr6zo9N5W8qFgO7pXjzM-oD7fbwwloe7vDEImLVGzA2JzvFCnMPntGqzN3LIh-Kw-Eu9w3lqiLAr8ZWpxT0o6JwcV1WyIGu/biztalk3.JPG" alt="biztalk3.JPG" title="biztalk3.JPG" style="width: 595px; height: 396px;" /></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">3. As the above, if just want to suspend or terminate the instance, besides the Terminator, you also can call the internal store procedure int_AdminSuspendInstance_&lt;host&gt; or int_AdminTerminateInstance_&lt;host&gt; directly to suspend or terminate the instance in MessageBox database. The following are the two SQL script sample to use the two store procedures.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Hard Suspend:<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><span style="mso-spacerun: yes;">&nbsp;</span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">declare @ApplicationName nvarchar(128)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">declare @uidInstanceID uniqueidentifier<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">declare @uidServiceID uniqueidentifier<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">declare @fKnownInstance int<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">declare @nvcErrorString nvarchar(512)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">declare @dtTimeStamp datetime<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">declare @spname nvarchar(512)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Begin Tran<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">set @ApplicationName='testhost'<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">set @uidInstanceID='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">set @uidServiceID='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">set @dtTimeStamp=GETUTCDATE()<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">select @nvcErrorString = nvcError FROM dbo.LocalizedErrorStrings WHERE nID = 4<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">set @spname= 'int_AdminSuspendInstance_' + @ApplicationName<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">exec @spname @uidInstanceID, @uidServiceID, N'0xC0C01B50', -1, @nvcErrorString, 1, null, @dtTimeStamp, null, null, @fKnownInstance OUTPUT<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">DELETE FROM InstancesPendingOperations WITH (ROWLOCK) WHERE uidInstanceID = @uidInstanceID OPTION (KEEPFIXED PLAN)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Commit Tran<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Hard Terminate:<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">declare @ApplicationName nvarchar(128)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">declare @uidInstanceID uniqueidentifier<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">declare @uidServiceID uniqueidentifier<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">declare @fKnownInstance int<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">declare @spname nvarchar(512)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Begin Tran<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">set @ApplicationName='testhost'<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">set @uidInstanceID=' xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx '<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">set @uidServiceID=' xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx '<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">set @spname= 'int_AdminTerminateInstance_' + @ApplicationName<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">exec @spname @uidInstanceID, @uidServiceID, @fKnownInstance OUTPUT<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">DELETE FROM InstancesPendingOperations WITH (ROWLOCK) WHERE uidInstanceID = @uidInstanceID OPTION (KEEPFIXED PLAN)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Commit Tran<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">*note*<span style="mso-spacerun: yes;">&nbsp;&nbsp; </span><span style="mso-spacerun: yes;">&nbsp;</span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">(1) The two store procedures are used by BizTalk internally to suspend or terminate an instance, the implementation and the SP interface could be changed in future. The above sample scripts are based on BTS2K6 and BTS2K6R2<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">(2) You must modify the script to provide the BizTalk Host name, the uidInstanceID and uidServiceID of the target service instance to the variables @ApplicationName, @uidInstanceID and @uidServiceID before execute the script.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">(3) Stop the running host instance before execute the script in order to avoid any inconsistence error between the status of the running instance in the host process memory and the status of the instance persisted in the database.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">*note* In multiple boxes BizTalk environment, the host instance which an active instance is running in can be found by looking &ldquo;Processing Server&rdquo; and &ldquo;Host&rdquo; columns of the service instance in BizTalk admin console. The columns for &ldquo;Processing Server&rdquo; and &ldquo;Host&rdquo; are not listed in the BizTalk group hub UI by default and they can be added manually.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">(4) As you can see in Terminator when use Terminate Instance (Hard), the above script should also be used as a last resort. You should be very clear what you want to do and what the impact could be in business before decide to use the script.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">4. In BTS2K6 R2 + KB969987 (<a href="http://support.microsoft.com/kb/969987"><span style="color: #0066dd;">http://support.microsoft.com/kb/969987</span></a>) and BTS2K9, it is easier to terminate or suspend such active instance. If you see the instance keep Active with the Pending Operation set after terminate or suspend an active instance in BTS2K6 R2 + KB968897 and BTS2K9, simply restart the host instance which the target service instance is running with, you will see the Pending operation(Terminate or Suspend) got executed immediately after the host instance is restarted. This is because that when a host instance is restarted in BTS2K6 R2 + KB969987 or in BTS2K9, it will check if there is a Pending Operation for every service instance which was owned by this host instance previously, the Pending Operation for an instance will get executed immediately if it is found.</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p></o:p></span>&nbsp;</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Regards,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">XiaoDong Zhu<o:p></o:p></span></p>]]></content:encoded>
    </item>
    <item>
      <title>0x800706D9 when contact a SSO master secret cluster</title>
      <link>https://docs.microsoft.com/archive/blogs/asiabiztalk/0x800706d9-when-contact-a-sso-master-secret-cluster</link>
      <pubDate>Mon, 27 Dec 2010 23:52:08 GMT</pubDate>
      <dc:creator><![CDATA[AsiaBizTalk]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/asiabiztalk/2010/12/27/0x800706d9-when-contact-a-sso-master-secret-cluster/</guid>
      <description><![CDATA[&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;...]]></description>
      <content:encoded><![CDATA[<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">NOTE: This article is migrated from Blog AsiaTech</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Date: 2009-11-24 8:43 PM</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Orignal URL: <a href="http://blogs.msdn.com/b/asiatech/archive/2009/11/24/0x800706d9-when-contact-a-sso-master-secret-cluster.aspx">http://blogs.msdn.com/b/asiatech/archive/2009/11/24/0x800706d9-when-contact-a-sso-master-secret-cluster.aspx</a></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;<br /></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Symptom:<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">==========<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">You may see the following warning event in a BizTalk machine.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Event Type: Warning<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Event Source: ENTSSO<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Event ID: 10536<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Description:<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">SSO AUDIT<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Function: GetConfigInfo<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Tracking ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Client Computer: xxx.xxx.xxx (BTSNTSvc.exe:1234) Client User: Domain\BizAdmin Application Name: { xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx } Error Code: 0x800706D9, There are no more endpoints available from the endpoint mapper.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">If try to backup the master secret on the SSO master secret cluster, you can get the below error:<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">C:\Program Files\Common Files\Enterprise Single Sign-On&gt;ssoconfig -backupsecret test.bak<br />Password : *******<br />Confirm Password : *******<br />Password reminder : 1234567<br />ERROR: 0xC0002A0F : Could not contact the SSO server 'sso-cluster'. Check that SSO is configured and that the SSO service is running on that server.<br />(RPC: 0x800706D9: There are no more endpoints available from the endpoint mapper.)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Cause:<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">===========<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">In the SSO master secret cluster environment, the RPC service &ldquo;SSOSecretServer&rdquo; will not be registered successfully in the RPC endpoint mapper if the local ENTSSO service is started on a node before the clustered ENTSSO resource is brought online on this node. <o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">For example, someone starts the local ENTSSO service from the service control manager or some tool executes a command &ldquo;net start ENTSSO&rdquo; on a cluster node. <o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">In our case, we find there is a monitoring tool which periodically starts the local ENTSSO service on both cluster nodes if it finds they are not started, then the error will be reported when the cluster ENTSSO failover to another node which the local ENTSSO service is already started. Using &ldquo;rpcdump&rdquo; utility (the command &ldquo;rpcdump -s &lt;sso-cluster&gt; -i&rdquo;) or &ldquo;portqry&rdquo; utility (the command &ldquo;portqry -n &lt;sso-cluster&gt; -e 135&rdquo;) could list the registered RPC services in a RPC endpoint mapper. In this case, we only see the SSO related RPC services SSOMappingServer,SSOAdminServer,SSOLookupServer,SSOCSServer were registered but SSOSecretServer.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Solution:<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">=========<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Stop the local ENTSSO service on another node and failover the cluster SSO to the node.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Configure the monitoring tool and stop to start the local ENTSSO service on both cluster nodes.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">Regards,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: 'Calibri', 'sans-serif'; color: black; font-size: 10pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-themecolor: text1;">XiaoDong Zhu<o:p></o:p></span></p>]]></content:encoded>
    </item>
  </channel>
</rss>