我们有一个SQL 2008,并希望创建一个链接服务器到一个dbf文件。 我应该选择哪个提供商,我提供的提供商(ADsDSOObject,MSDAOSP,MSDASQL,MSIDXS,MSOLAP,SQLNCLI10,SQLOLEDB)如何在sql 2008中创建链接服务器到.dbf?
如果以上都没有,那么还有其他提供商吗?
我们有一个SQL 2008,并希望创建一个链接服务器到一个dbf文件。 我应该选择哪个提供商,我提供的提供商(ADsDSOObject,MSDAOSP,MSDASQL,MSIDXS,MSOLAP,SQLNCLI10,SQLOLEDB)如何在sql 2008中创建链接服务器到.dbf?
如果以上都没有,那么还有其他提供商吗?
我见过一些链接到dbf的方法。我认为我最喜欢的一个就是使用Visual FoxPro提供程序,您可以使用download from Microsoft。
一旦安装我见过的最常用的方法是使用以下设置:
从EM链接服务器属性中选择“OLE DB提供程序的Visual FoxPro”作为提供程序名称
产品名称:留空
数据来源:位置的文件夹中包含的DBF文件
提供字符串:VFPOLEDB
连接dbf文件的其他选项包括MDAC,ODBC等,但是通过这些选项通过链接可以完成的操作最多是有限的,错误的和不可预测的,具体取决于确切的版本。视觉狐狸提供者似乎做了最好的工作。
这related SO link也有关于连接到一个DBF
不能创建64位的SQL Server和32位DBF驱动程序的链接服务器的一些其他信息。
但是,您可以在Visual Studio中使用适用于OLE DB的.NET Framework Provider然后在VFP的MS OLE DB Provider中打开一个新的SqlDataSource。连接字符串应该看起来像这样(或使用UNC)
Provider=VFPOLEDB.1;Data Source=h:\Programs\Data;Persist Security Info=True;User ID=Your_user;Password=your_password
配置向导包含一个部分来测试您的SQL。您可以使用此运行临时SQL。
我的分步是:
Intall驱动程序 Microsoft Access数据库引擎2010可再发行 AccessDatabaseEngine.exe 32Bit AccessDatabaseEngine_x64.exe 64Bit
CREATE SQL 2012 LinkedServer
EXEC master.dbo.sp_addlinkedserver
@server ='LinkedServerName',
@srvproduct = '微软ACE OLEDB 12',
@provider = 'Microsoft.ACE.OLEDB.12.0',
@datasrc = 'C:\ DBF_Directory',
@provstr = '的dBASE 5.0'
EXEC master.dbo。sp_addlinkedsrvlogin
@rmtsrvname = 'LinkedServerName',
@useself = '假',
@locallogin = NULL,
@rmtuser = '管理',
@rmtpassword = ''
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
选择*来自LinkedServerName ...表名
如果您收到此错误:
问题我发现的是,运行QRY用户没有 对sqlserver的临时目录
permition在这种情况下,y使用SysinternalsSuite ProcessMon.exe从网上下载 https://technet.microsoft.com/en-us/sysinternals/bb842062.aspx
SQLSERVR.EXE:000查询信息
C:\用户\ MSSQLSERVER \应用程序数据\本地\温度拒绝访问
克咆哮权限到C:\用户\ MSSQLSERVER \目录
或
C:\ WINDOWS \ ServiceProfiles \网络服务\应用程序数据\被拒
授予权限到C本地的\ Temp ACCESS:\ WINDOWS \ ServiceProfiles \网络服务\目录
因此,我授予对用户的读/写权限,它正在运行que sql qry并且一切正常。
注意:授予对MSSQLSERVER对象的权限有点棘手。
感谢快速回答说,对不起,我忘了提及的SQL 2008年是64位的,我想你的解决方案,这不是”吨工作在64位。 – 2012-04-06 14:33:29
嗯,这是一个问题。使用链接服务器有多重要?这个dbf是否经常更改?如果没有,您可以简单地创建一个shell数据库并使用SSIS或其他ETL方法导入数据,然后查询该数据库。 – RThomas 2012-04-06 16:56:28