0
バックグラウンドワーカーで2つのSQL文(MSSQL 2005)を非同期で実行しようとしています。しかし、最初のSqlCommandでEndExecuteNonQueryメソッドを呼び出すと、「SQL構文エラーに近い」エラーが表示されます。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));
}
それはWAITFOR DELAYの両方のSQLコマンドを実行しても問題が解決したようです追加して、[OK]を最初count = sqlCmd.EndExecuteNonQuery(result);
最初のものだけを実行すると問題が表示されますか? – dzendras
最初のクエリで 'WHERE'と' EligibilityRecord 'の間に' space'があることは確かですか? –
それは私が思ったものですが、私はエラーを見ることができませんでした:) 2つのクエリは問題ではなく、非同期モードでもありませんが、シンプルな単一の構文クエリのエラー:) – dzendras