1

TerminateInstance尝试终止调用操作对象的实例时,我得到以下信息:

System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting from a character string to uniqueidentifier.
 at Microsoft.BizTalk.Database.DatabaseAccessor.ExecuteReader(Int32 procIndex, Object[] procParams)
 at Microsoft.BizTalk.Operations.OperationsMessageBoxAccessor.ops_OperateOnInstances(Int32 snOperation, Int32 fMultiMessagebox, Guid uidInstanceID, String nvcApplication, Int32 snApplicationOperator, String nvcHost, Int32 snHostOperator, Int32 nServiceClass, Int32 snServiceClassOperator, Guid uidServiceType, Int32 snServiceTypeOperator, Int32 nStatus, Int32 snStatusOperator, Int32 nPendingOperation, Int32 snPendingOperationOperator, DateTime dtPendingOperationTimeFrom, DateTime dtPendingOperationTimeUntil, DateTime dtStartFrom, DateTime dtStartUntil, String nvcErrorCode, Int32 snErrorCodeOperator, String nvcErrorDescription, Int32 snErrorDescriptionOperator, String nvcURI, Int32 snURIOperator, DateTime dtStartSuspend, DateTime dtEndSuspend, String nvcAdapter, Int32 snAdapterOperator, Int32 nGroupingCriteria, Int32 nGroupingMinCount, Int32 nMaxMatches, Guid uidAccessorID, Int32 nIsMasterMsgBox)
 at Microsoft.BizTalk.Operations.OperationsGroup.OperateOnInstances(InstanceFilter ifc, MessageBoxDatabase mb, InstanceOperation op)
 at Microsoft.BizTalk.Operations.OperationsGroup.TerminateInstances(InstanceFilter ifc, MessageBoxDatabase mb)
 at Microsoft.BizTalk.Operations.OperationsGroup.TerminateInstances(InstanceFilter ifc)
 at Microsoft.BizTalk.Operations.OperationsGroup.TerminateInstances(Guid instanceID)
 at Microsoft.BizTalk.Operations.BizTalkOperations.TerminateInstance(Guid instanceID)

我正在执行的代码是正确的,所以我不会浪费空间把它放在这里。它是在 SQL 2014 后端上运行的 BizTalk 2013 R2,都在同一个盒子上。Windows 服务器 2012 R2。可能是什么原因,我尝试将 Guid 解析为字符串然后再返回,我想知道是否与 Arch 有关。但一切都以64位运行。

无论如何,任何人都有任何想法,有同样的问题......类似吗?

4

2 回答 2

3

好的。事实证明,尽管我认为我有正确的代码,但我没有......

我在 SAME BizTalkOperations 对象上调用 TerminateInstance 方法,该对象用于执行查询以最初获取 ServiceInstances。

当我创建一个新的 BizTalkOperations 对象并在其上调用 TerminateInstance 并传递 InstanceID 时,问题就消失了。

或者至少在内部发生了一些我不知道的奇怪事情,无论这是设计使然还是只是一个错误,都需要注意。

于 2014-12-13T19:25:49.560 回答
0

我最近在具有多个 MessageBoxDB 的 BizTalk 2016 设置中偶然发现了同样的奇怪行为,只有在 MessageBoxDB 上没有发生错误。

这是我解决这个奇怪错误的代码

List<System.Guid> suspendedInstances = new List<System.Guid>();
using (var opsRead = new BizTalkOperations())
{
    foreach (MessageBoxServiceInstance item in opsRead.GetServiceInstances())
    {
        if (item.InstanceStatus == InstanceStatus.Suspended)
        {
            suspendedInstances.Add(item.ID);
        }
    }
}

using(var opsWrite = new BizTalkOperations())
{
    foreach(var itemId in suspendedInstances)
    {
        opsWrite.ResumeInstance(itemId);
    }
}
于 2020-07-29T08:49:54.010 回答