admin

由于数据溢出转换失败(数字)

sql

我试图将数据从.dbf文件移动到SQL Server 2008中的表,并且在多个数字列上遇到以下错误:

链接服务器“(空)”的OLE DB提供程序“ MSDASQL”返回消息“多步OLE DB操作生成了错误。请检查每个OLE
DB状态值(如果可用)。未完成工作。”。消息7341,级别16,状态2,行1无法从链接服务器“(null)”的OLE DB提供程序“
MSDASQL”获得列“ [MSDASQL] .apryr”的当前行值。转换失败,因为数据值溢出了提供程序使用的数据类型。

它仅在数字列上发生,而不是在每个数字列上发生。字符数据很好,没有日期/时间数据可能会引起任何问题。

这是我正在使用的代码示例:

插入到[表]中,从OPENROWSET中选择(’MSDASQL’,’DRIVER = Microsoft Visual FoxPro驱动程序;
SourceDB = [文件路径]; SourceType = DBF’,’从[file] .dbf中选择

由于dbf文件中的数据是客户数据,因此有人告诉我无法手动修复文件中的垃圾数据(假设有任何数据),并且所有操作都必须通过SQL代码完成。我已经在互联网上搜索了,还没有真正找到解决该问题的方法。我将不胜感激。

谢谢你。


阅读 163

收藏
2021-06-07

共1个答案

admin

不了解更多细节,情况听起来很简单:dbf文件中的数据与SQL Server表中的数据类型不匹配。如果真是这样,那么您有两种选择:

  1. 更改您的SQL Server表以容纳dbf文件中的数据。

  2. 不要从导致问题的dbf文件中导入数据。

在选项#1中,您可以将限制性数字或日期类型字段修改为varchar或nvarchar字段。然后,您可能想要修改任何可能在dbf文件中假设某些数据类型的程序,以容纳varchar或nvarchar数据。例如,您可以使用某种try-
catch语言来在允许程序访问数据之前测试数据的转换。

如果决定使用选项#2,则可以将选择查询更改为筛选出不满足SQL Server表的字段要求的数据。

祝你好运!

2021-06-07