我们有一个sql 2008,并希望创建一个链接服务器到dbf文件。 我应该选择哪个提供商,我有的提供商(ADsDSOObject,MSDAOSP,MSDASQL,MSIDXS,MSOLAP,SQLNCLI10,SQLOLEDB)
如果这些都没有,是否还有其他提供商?
答案 0 :(得分:4)
我的一步一步是:
Intall Drivers Microsoft Access数据库引擎2010可再发行组件 AccessDatabaseEngine.exe 32Bit AccessDatabaseEngine_x64.exe 64Bit
创建Sql 2012 LinkedServer
EXEC master.dbo.sp_addlinkedserver
@server ='LinkedServerName',
@srvproduct ='Microsoft 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 ='False',
@locallogin = NULL,
@rmtuser ='Admin',
@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中选择* ... TableName
如果您收到此错误:
我发现的问题是运行qry的用户没有 对sqlserver临时目录有所了解
在这种情况下,请使用SysinternalsSuite ProcessMon.exe下载 https://technet.microsoft.com/en-us/sysinternals/bb842062.aspx
sqlservr.exe:000查询信息
C:\ Users \ MSSQLSERVER \ AppData \ Local \ Temp ACCESS DENIED
授予对C:\ Users \ MSSQLSERVER \目录的权限
或
C:\ Windows \ ServiceProfiles \ NetworkService \ AppData \ Local \ Temp ACCESS DENIED
授予对C:\ Windows \ ServiceProfiles \ NetworkService \目录
所以我授予用户的读/写权限,它正在运行que sql qry,一切运行正常。
注意:授予MSSQLSERVER对象权限有点棘手。
答案 1 :(得分:2)
我已经看到了一些链接到dbf的方法。我认为我最喜欢的是使用Visual FoxPro提供程序download from Microsoft。
一旦安装,我见过的最常见的方法是使用以下设置:
从EM链接服务器属性中选择“用于Visual FoxPro的OLE DB提供程序”作为提供程序名称
产品名称:留空
数据源:包含dbf文件的文件夹的位置
提供商字符串:VFPOLEDB
用于链接dbf文件的其他选项包括MDAC,ODBC等,但是通过这些选项通过链接可以做的最多是有限的,最坏的和最不可预测的,具体取决于确切的版本。视觉foxpro提供商似乎做得最好。
此related SO link还有一些关于链接到DBF的其他信息
答案 2 :(得分:0)
您无法使用64位SQL Server和32位DBF驱动程序创建链接服务器。
但是,您可以使用.NET Framework Provider for OLE DB,然后使用MS OLE DB Provider for VFP在Visual Studio中打开一个新的SqlDataSource。连接字符串应如下所示(或使用UNC)
Provider=VFPOLEDB.1;Data Source=h:\Programs\Data;Persist Security Info=True;User ID=Your_user;Password=your_password
配置向导包含一个测试SQL的部分。您可以使用此运行ad hoc SQL。