识别无效查询:ExecuteSqlCommand throws:SqlException(0x80131904):')'附近的语法不正确

时间:2017-08-29 19:46:46

标签: c# sql-server-2016

我偶尔会收到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):')'附近的语法不正确。

1 个答案:

答案 0 :(得分:0)

如果jobsReady返回一个空列表,你将得到一个无效的查询...我已经向查询中输入了随机值...请参阅查询末尾的空组

UPDATE TOP(100) Jobs SET ServerID=100,UpdateTime='2010-01-01' WHERE ServerID IS NULL AND JobID IN ()