BizTalk.Operations TerminateInstance SQL错误

BizTalk.Operations TerminateInstance SQL错误,biztalk,biztalk-2013r2,Biztalk,Biztalk 2013r2,在尝试终止对Operations对象调用的实例时,我得到以下信息: System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting from a character string to uniqueidentifier. at Microsoft.BizTalk.Database.DatabaseAccessor.ExecuteReader(Int32 procIndex, Object[]

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

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位运行


不管怎样,任何人有任何想法,都有同样的问题。。。类似吗?

正常。结果,尽管我认为我有正确的代码,但我没有

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

当我创建了一个新的BizTalkOperations对象并调用TerminateInstance,传递InstanceID时,问题就解决了


或者至少我不知道内部正在发生一些奇怪的事情,无论这是出于设计还是仅仅是一个bug,这都是需要注意的。

我最近在BizTalk 2016安装程序中遇到了相同的奇怪行为,该安装程序有多个MessageBoxDB,只有MessageBoxDB没有发生错误

这是我用来解决这个奇怪bug的代码

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);
    }
}
List suspendedInstances=new List();
使用(var opsRead=new BizTalkOperations())
{
foreach(opsRead.GetServiceInstances()中的MessageBoxServiceInstance项)
{
如果(item.InstanceStatus==InstanceStatus.Suspended)
{
吊挂状态。添加(项目ID);
}
}
}
使用(var optswrite=new BizTalkOperations())
{
foreach(悬挂状态下的var itemId)
{
opsWrite.ResumeInstance(itemId);
}
}

不确定。。。你是说像服务类型之类的?不我只是将一个Guid作为InstanceId传入,我在管理控制台中通过eye进行了验证。我还可以通过在删除之前查询Operations对象来查看实例,因此我确信它是正确的Guid值。请尝试使用ILSpy(BTS2013-无R2)在Microsoft.BizTalk.Operations.dll代码中的32位中运行它。调用TerminateInstances(Guid)应创建一个干净的InstanceFilter,InstanceID为相应的Guid,InstanceStatus设置为InstanceStatus.All。我能想象发生错误的唯一方法是,如果您的InstanceFilter在某种程度上是脏的,并且InstanceFilter中的以下guid之一毕竟不是guid:uidInstanceID、uidServiceType、uidAccessorID。因此,除非R2中对该程序集进行了一些更改,否则我认为您发现了一个bug。