0
Я пытаюсь запустить два оператора SQL (MSSQL 2005), асинхронно в фоновом рабочем документе. Однако, когда я вызываю метод EndExecuteNonQuery на первом SqlCommand, я получаю ошибку «Синтаксис SQL около ошибки».Ошибка синтаксиса SQL при использовании SQLCommand.EndExecuteNonQuery
Вот мой код:
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.EndExecuteNonQuery(result);
Когда выполняется только первый, возникает проблема? – dzendras
Вы уверены, что в вашем первом запросе есть 'пробел' между' WHERE' и 'EligibilityRecord'? –
Вот что я подумал, но я не мог видеть ошибку :) Не 2 вопроса - проблема, даже не режим асинхронизации, а простая синтаксическая ошибка запроса :) – dzendras