2010-08-13 136 views
0

当我运行连接到SQL Server 2000的.net应用程序时,出现“无效的浮点操作”错误。我没有搜索错误原因http://fugato.net/2005/02/08/sql-server-nastiness找到这个链接,说明其中一列中可能存在虚假数据。SQL Server 2000无效的浮点操作

我从一个月的旧数据备份,当我连接到旧的数据库,它工作正常。

如何过滤表中的假数据?

+0

确定的只有一个实例表中有几个nvarchar列,情侣浮动栏,一个ntext列 我observerd的错误是,当我过滤造成列但不能找到哪个列或行? – EvenPrime 2010-08-16 13:56:41

回答

3

一种方法可能是在出现错误时,使用游标执行逐行打印ID的有问题的操作,当发生错误时,可以引用打印的ID来查看哪一行包含错误数据。

然而,可能有更好的方法,这正是想到的!

+0

可能有一种“更好”的方式,但这很简单,易于实现,这在我的书中是一个很大的优点。 – Barry 2010-08-13 20:59:31

+1

只需记住在进入生产前再次删除该光标.... – 2010-08-14 07:53:35

+0

所以我发现问题,我有一个浮动值“1E + 21”这是造成问题,我不知道为什么SQL接受E格式,我更新到零现在一切都很好,谢谢 – EvenPrime 2010-08-16 19:15:30

0

你知道哪个表导致了问题吗?你可以针对这些表运行SELECT * FROM... +获得结果吗?如果是这样,请从表格中选择,然后按FLOAT/REAL/NUMERIC/DECIMAL列中的顺序排列,然后查看两端是否存在任何“异常”。

1

你需要缩小你的问题:

  • 究竟什么时候出现这种情况?什么SQL查询正在执行导致问题?

  • 一旦你有了查询 - 查看查询的功能;检查这些表 - 您是否可能将VARCHAR字段转换为数字值,并且某些值不是全部数字?

  • 或者您是否正在使用SqlDataReader读取数据,并且您没有注意到SQL Server中包含的数据可能不是您所期望的事实?

1
select col 
from tbl 
group by col 
having count(col) = 1 

有可能是错误的值