从 SQL Server 2008-2012 查询 DBF

Posted

技术标签:

【中文标题】从 SQL Server 2008-2012 查询 DBF【英文标题】:Querying DBF from SQL Server 2008-2012 【发布时间】:2013-06-14 18:01:16 【问题描述】:

我有以下问题,我们有一个旧的 fox pro 应用程序在 SCO UNIX 服务器上运行(我知道这太棒了!),我们实际上将文件从 FTP 传输到不同的服务器,然后我们将它们从 dbf 转换为 txt进而!我们阅读了 txt,最后将它们保存在 SQL 中。

我知道上面的情况很糟糕,现在我们有很多新的应用程序,但这特别给我们带来了很多问题,我们正在购买一个新的解决方案,但与此同时,我们需要处理这个问题。

所以我们有 SQL 2008 Servers 和 SQL 2012 Servers,我想直接从 SQL Servers 读取和修改 DBF,所以我谷歌它并得到以下解决方案。

sp_configure 'show advanced options', 1
reconfigure
GO

sp_configure 'Ad Hoc Distributed Queries', 1
reconfigure

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1;
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1;

SELECT COLUMN1,
COLUMN2
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','dBASE III;Database=\\RemotServerName\ShareName\Folder1\SubFolder1\','SELECT COLUMN1, COLUMN2 FROM DBASEFIL.dbf WHERE COLUMN3 = ''C''')

我差点哭出来,但随后出现以下错误(我从西班牙语翻译):

OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Unspecified error".
Mens. 7303, Level 16, State 1, Line 5
Can not initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".

希望你能给我一些建议,我尝试了很多解决方案都没有任何结果

【问题讨论】:

某些版本的 Foxpro(特别是如果涉及备注字段)与 dBase III 不兼容。有没有备注字段(或与 DBF 同名且有 FPT 扩展名的文件) 据我所知,数据库中没有备注字段 【参考方案1】:

试试creating a Linked Server in SQL Server to the Foxpro database。

【讨论】:

主要问题在于 SQL 2000。【参考方案2】:

我在尝试做同样的事情时遇到了 7303 问题,并且很容易解决。只需确保 SQL 用户帐户对您尝试导入的文件具有正确的权限即可。

【讨论】:

以上是关于从 SQL Server 2008-2012 查询 DBF的主要内容,如果未能解决你的问题,请参考以下文章

用于 Linux 上 Django 的 SQL Server 2008/2012 后端模块?

SQL Server 2005/2008/2012中应用分布式分区视图

SQL Server 2012安装图解

SQL Server 2012安装图解

mysql和sql server可以同时安装吗

SQL Server:从查询返回的动态列