从visual foxpro(dbf)导入sql server的问题。(急)
我用下面语句导入sql server时,
/////////////////////////////////////////////
select * into [B101-2005] from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=D:\dx\data\year','select * from [B101-2005]')
发生如下错误:
////////////////////////////////////////
服务器: 消息 7341,级别 16,状态 2,行 1
未能得到列 '[MSDASQL].b181' 的当前行的值(从 OLE DB 提供程序 'MSDASQL' 中)。由于数据值溢出了提供程序所用数据类型的取值范围,转换失败。
[OLE/DB provider returned message: 多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。]
OLE DB 错误跟踪[OLE/DB Provider 'MSDASQL' IRowset::GetData returned 0x80040e21: Data status returned from the provider: [COLUMN_NAME=b181 STATUS=DBSTATUS_E_DATAOVERFLOW]]。
/////////////////////////////////////////////
由于在vf中,b181该列是numeric型的,有些数据超过了6位,所以这样就产生了上述错误,我把该表中的b181大于6位的记录删除,就没有问题。难道导入时,sql server把vf中的numeric当作int来看待,怎么不把它导成sql server中的numeric,这样就不会溢出了。
现在问题是,大于6位的记录不能删除,如何才能导入?sql server中的表原始不存在的,要从vf中导入后才存在,所以修改sql server表结构是不行的。并且导入的表的数目也是不确定的。
谢谢各位!