我正在尝试将数据从.dbf文件移动到SQL Server 2008中的表,并且在多个数字列上出现以下错误:
OLE DB提供程序“MSDASQL”用于链接服务器“(null)”返回消息“多步OLE DB操作生成错误。检查每个OLE DB状态值,如果可用。没有工作。”。 Msg 7341,Level 16,State 2,Line 1 无法从OLE DB提供程序“MSDASQL”获取链接服务器“(null)”的列“[MSDASQL] .apryr”的当前行值。转换失败,因为数据值溢出了提供程序使用的数据类型。
它只发生在数字列而不是每个数字列上。字符数据很好,没有日期/时间数据可以提出任何问题。
以下是我正在使用的代码示例:
插入[table] select * from OPENROWSET('MSDASQL', 'DRIVER = Microsoft Visual FoxPro驱动程序; SOURCEDB = [文件路径]; SourceType中= DBF”, '选择 * 来自[file] .dbf)
由于dbf文件中的数据是客户数据,我被告知无法手动修复文件中的垃圾数据(假设有任何数据),所有操作都必须通过SQL代码完成。我在互联网上搜索过,并没有找到解决这个问题的方法。我很感激任何帮助。
谢谢。
答案 0 :(得分:0)
检查SQL Server表上的字段类型。也许他们中的一些人无法获取你的DBF的BCD值。
答案 1 :(得分:0)
在不知道更多细节的情况下,情况听起来很简单:dbf文件中的数据与SQL Server表中的数据类型不匹配。如果是这种情况,那么您有两种选择:
更改SQL Server表以容纳dbf文件中的数据。
请勿导致导致此问题的dbf文件中的数据。
在选项#1中,您可以将限制性数字或日期类型字段修改为varchar或nvarchar字段。然后,您可能希望修改可能假定dbf文件中的某些数据类型以容纳varchar或nvarchar数据的任何程序。例如,您可以使用某种try-catch语言来测试数据转换,然后让程序访问它。
如果您决定使用选项#2,则可以更改您的选择查询以过滤掉不符合SQL Server表的字段要求的数据。
祝你好运!