BizTalk.Operations TerminateInstance SQL错误

时间:2014-12-13 01:59:54

标签: biztalk biztalk-2013r2

尝试终止在Operations对象上调用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 Server 2012 R2。可能是什么原因,我已经尝试将Guid解析为字符串并再次返回,我想知道是否与Arch有关。但一切都以64位运行。

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

2 个答案:

答案 0 :(得分:3)

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

我在SAME BizTalkOperations对象上调用了TerminateInstance方法,我曾用它来执行查询以初始获取ServiceInstances。

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

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

答案 1 :(得分:0)

我最近偶然发现在BizTalk 2016安装程序中具有多个MessageBoxDB的相同奇怪行为,仅在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);
    }
}