【发布时间】:2021-11-09 03:38:02
【问题描述】:
当我执行以下查询时,它在 SSMS 中正确执行,但代码中的相同查询不会删除任何内容,并且 0 行受到数千行的影响。
代码执行没有任何错误,也尝试了查询参数但没有成功。
Logs 是表,DateCreated 是 DateTime 的列。 Sql Connection设置等都正确。
SSMS 查询执行如下:
有人可以更正此查询的代码吗?
connection.Open();
SqlCommand cmd1 = new SqlCommand("delete TOP (100) from [Logs] WHERE DateCreated < GETDATE() - 30", connection);
var number_of_rows_deleted = cmd1.ExecuteNonQuery();
result = number_of_rows_deleted.ToString() + " records deleted";
【问题讨论】:
-
这需要一个 ORDER BY 子句。
-
另外:你有错误吗?这里是否有可能隐藏错误的尝试/捕获?连接字符串是否与 SSMS 连接的用户/登录名相同?除了
dbo,是否还有其他架构,因为未运行的查询中缺少这些架构? -
除了您引用表格的方式之外,SSMS 和点网代码查询是相同的,所以您(选择一个): 没有使用相同的连接;收到您未共享的错误;由于某些程序流逻辑(在该行设置断点并进行调试),实际上并没有访问该代码;我想就是这样......
-
愚蠢,但我不得不问。使用 SSMS 删除 100 行后,您是否恢复了表?或者您还有另外一组 100 行要删除吗?
-
@JoelCoehoorn,已更新问题。代码执行没有错误,有数千条记录,正如我所说的,只有查询需要更正。