SQL Server查询:遇到无效的日期时间值。价值超过了9999年

时间:2017-10-14 10:03:39

标签: sql-server datetime

当我运行此查询时:

select TimeUtc, CompanyId from dbo.storedcommands

SSMS将开始从4,100万条记录中删除前3,800万条记录,最后它会给我这条消息:

An error occurred while executing batch. Error message is: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.

奇怪的是列数据类型是datetime所以我不知道读取它会如何导致溢出,除非一些数据被破坏。

Table defintion

现在我的问题是,我怎样才能找出为什么会发生这种情况以及如何解决?

UPDATE: CheckDB或带有Data_Purity检查的CHECKTABLE都没有报告任何内容。但至少在索引上似乎存在一些数据损坏。

enter image description here

1 个答案:

答案 0 :(得分:1)

看到事情看起来已损坏我决定重新启动计算机。你猜怎么着。现在又恢复了......

我甚至尝试重启的原因:

  • 我很确定它之前有效,而且我没有插入任何新内容 行
  • 没有data_purity检查给出任何错误
  • 谷歌搜索这个错误给了很多命中。但仅适用于更新/插入/强制转换/添加。永远不要查询。别人没错 在花时间之前,我们应该重新启动。
  • 我从上面的查询得到的结果似乎非常奇怪,不应该是可能的,因为我们远离那个Id种子。