Sql server 2005 使用SQLCommand.EndExecuteNonQuery时出现SQL语法错误

Sql server 2005 使用SQLCommand.EndExecuteNonQuery时出现SQL语法错误,sql-server-2005,devexpress,iasyncresult,Sql Server 2005,Devexpress,Iasyncresult,我试图在后台工作程序中异步运行两条SQL语句(MSSQL 2005)。但是,当我在第一个SqlCommand上调用EndExecuteNonQuery方法时,我得到一个“SQL语法错误”错误 这是我的密码: try { SqlCommand sqlCmd = uow.DataLayer.CreateCommand() as SqlCommand; sqlCmd.CommandText = "DELETE FROM dbo.EligibilityRecordKeyValue WHE

我试图在后台工作程序中异步运行两条SQL语句(MSSQL 2005)。但是,当我在第一个SqlCommand上调用EndExecuteNonQuery方法时,我得到一个“SQL语法错误”错误

这是我的密码:

try
{
    SqlCommand sqlCmd = uow.DataLayer.CreateCommand() as SqlCommand;
    sqlCmd.CommandText = "DELETE FROM dbo.EligibilityRecordKeyValue WHERE EligibilityRecord IN " +
    "(SELECT EligibilityRecord FROM dbo.EligibilityRecord WHERE Organization = '" + map.Organization.Oid + "')";
    IAsyncResult result = sqlCmd.BeginExecuteNonQuery();
    while (!result.IsCompleted)
    {
        worker.ReportProgress(0, "Deleting existing record keys");
        System.Threading.Thread.Sleep(200);
    }
    count = sqlCmd.EndExecuteNonQuery(result);
}
catch (SqlException ex)
{
}
catch (InvalidOperationException ex)
{
}
finally
{
    worker.ReportProgress(2, String.Format("Existing {0} records keys deleted.", count));
}

try
{
    SqlCommand sqlCmd = uow.DataLayer.CreateCommand() as SqlCommand;
    sqlCmd.CommandText = "DELETE FROM dbo.EligibilityRecord WHERE Organization = '" +      map.Organization.Oid + "'";
    IAsyncResult result = sqlCmd.BeginExecuteNonQuery();
    while (!result.IsCompleted)
    {
        worker.ReportProgress(0, "Deleting existing records");
        System.Threading.Thread.Sleep(200);
    }
    count = sqlCmd.EndExecuteNonQuery(result);
}
catch (SqlException ex)
{
}
catch (InvalidOperationException ex)
{
}
finally
{
    worker.ReportProgress(5, String.Format("Existing {0} records deleted.", count));
}

它在第一次
count=sqlCmd.endexecutenquery(结果)时失败

好的,将waitfordelay添加到两个SQL命令中似乎已经解决了这个问题

sqlCmd.CommandText = String.Format("WAITFOR DELAY '00:00:05'; DELETE FROM dbo.EligibilityRecordKeyValue WHERE EligibilityRecord IN " + 
                    "(SELECT EligibilityRecord FROM dbo.EligibilityRecord WHERE Organization = '{0}')", map.Organization.Oid);

sqlCmd.CommandText = String.Format("WAITFOR DELAY '00:00:05'; DELETE FROM dbo.EligibilityRecord WHERE Organization = '{0}'", map.Organization.Oid);

有人知道为什么会发生这种情况吗?

当只执行第一个查询时,是否会出现问题?您确定第一个查询中的
WHERE
EligibilityRecord
之间存在
空格
?这是我的想法,但我看不到错误:)不是两个查询都有问题,甚至不是异步模式,但简单的单语法查询错误:)