如何在sql 2008中创建链接服务器到.dbf?

时间:2012-04-05 22:13:48

标签: sql sql-server

我们有一个sql 2008,并希望创建一个链接服务器到dbf文件。 我应该选择哪个提供商,我有的提供商(ADsDSOObject,MSDAOSP,MSDASQL,MSIDXS,MSOLAP,SQLNCLI10,SQLOLEDB)

如果这些都没有,是否还有其他提供商?

3 个答案:

答案 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

  • 如果您收到此错误:

    • OLE DB提供程序“Microsoft.ACE.OLEDB.12.0” 链接服务器“LinkedServerName”返回消息“未指定 错误“。
    • 消息7303,级别16,状态1,行1无法初始化 OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象 链接服务器“LinkedServerName”

    我发现的问题是运行qry的用户没有 对sqlserver临时目录有所了解

  • 在这种情况下,请使用SysinternalsSuite ProcessMon.exe下载 https://technet.microsoft.com/en-us/sysinternals/bb842062.aspx

    • 应用过滤器Ctr + L和
    • filter Result ='ACCESS DENIED'点击添加
    • 选择仅显示文件系统活动
      当sql查询运行时,你会看到这样的事情:

    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. 我做过:
      • 文件夹中的属性
      • 选择安全选项卡
      • 单击“编辑”按钮单击
      • 添加按钮
      • 输入对象名称: NT Service \ MsSqlServer 单击检查名称
      • 选择 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。