2017-10-14 277 views
0

当我运行此查询:SQL Server查询:遇到无效的日期时间值。值超过了9999年

select TimeUtc, CompanyId from dbo.storedcommands 

SSMS将开始拉低第3,8万条记录了4,1万元才终于给了我这个消息:

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. 

奇怪的是,列数据类型是日期时间,所以我不明白读取它会导致溢出,除非一些数据被损坏。

Table defintion

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

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

enter image description here

+0

你是如何获取数据到表?您是否尝试过使用DBCC CHECKTABLE检查是否存在损坏? –

+0

@AndreasVendel没有运行的错误消息: DBCC CHECKTABLE(StoredCommands); 有没有其他可能有用的选项? –

+0

已通过INSERT语句插入数据。但其实这是DB通过.bacpac创造生产的备份 –

回答

1

眼看事情看起来损坏,我决定重新启动计算机。你猜怎么了。现在它的再次合作...

原因我甚至尝试重新启动:

  • 我敢肯定它前面的工作和我没有任何插入新行
  • 没有DATA_PURITY检查了任何错误
  • 使用谷歌搜索这个错误给出了很多点击。但只限于更新/插入/转换/添加。从不为查询。错误没有其他人 花费时间之前,应该重新启动。
  • 我从上面的查询中得到的结果看起来非常奇怪,应该是不可能的,因为我们远离那个Id种子。
+3

Aaaah,ye olde [“你试过把它关掉再打开吗?](https://youtu.be/5UT8RkSmN4k):-) –

+0

你重新启动了什么?客户机或服务器?还是这两个都一样? –

+0

@MartinSmith它在一个开发盒上,所以它是一样的。 –