我偶尔会收到SQL异常,但无法找到此代码导致无效MS SQL语句的任何方式。
jobsReady是IQueryable< int>
if (jobsReady.Count() > 0 && max > 0)
return this.Database.ExecuteSqlCommand("UPDATE TOP(" + max + ") Jobs SET ServerID=" + serverID + ",UpdateTime=@UpdateTime WHERE ServerID IS NULL AND JobID IN ( " + string.Join(", ", jobsReady) + ")",
new SqlParameter("@UpdateTime", System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "UpdateTime", global::System.Data.DataRowVersion.Current, false, DateTime.Now, "", "", ""));
return 0;
有时会抛出:
Timer_Elapsed发生错误: System.Data.SqlClient.SqlException(0x80131904):')'附近的语法不正确。
答案 0 :(得分:0)
如果jobsReady返回一个空列表,你将得到一个无效的查询...我已经向查询中输入了随机值...请参阅查询末尾的空组
UPDATE TOP(100) Jobs SET ServerID=100,UpdateTime='2010-01-01' WHERE ServerID IS NULL AND JobID IN ()