正如标题所说,我正在尝试使用 openrowset 将 FoxPro dbf 文件导入 sql server。起初,我尝试将 DBF 导出到 xls 文件并使用导入/导出向导导入。这通常工作得很好,但是有一个字段有时包含一个非常长的字符串,并且在从 dbf 导出到 xls 期间,该字符串被截断为 4096 个字符。
我找到了一篇旧帖子,其中包含有关如何使用 openrowset 执行此操作的说明。
当我尝试第一个答案时:
select *
from openrowset('MSDASQL', 'Driver=Microsoft Visual FoxPro Driver;
SourceDB=\\path\;
SourceType=DBF',
'select * from TABLE.DBF')
我得到错误:
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "(null)".
当我尝试第二个答案时:
select *
from openrowset('VFPOLEDB',
'\\Path\';'';'',
'select * from TABLE.DBF')
我得到错误:
Msg 7403, Level 16, State 1, Line 1
The OLE DB provider "VFPOLEDB" has not been registered.
我尝试使用 regsvr32 手动注册 OLE*.dll 文件,但只有其中一些有效。在 ole32、oleacc、oleaut32 和 oleprn 上,我收到了一条成功消息。在 oleacchooks、oleaccrc、oledlg 和 oleres 上,我收到了这个错误:
The module "oleacchooks" was loaded but the
entry-point DllRegisterServer was not found.
Make sure that "oleacchooks" is a valid DLL or OCX file
and then try again
经过一番 调查,我尝试安装组件,但是当我尝试为 FoxPro 安装 msi 文件(在此处找到)时,出现此错误:
An error occurred while processing the last operation.
Error code 80110408 - Error occurred reading the application file
The event log may contain additional troubleshooting information.
所以,我在这里正式迷路了。有人对如何让 openrowset 工作或其他导入 dbf 文件的方式有建议吗?