代码之家  ›  专栏  ›  技术社区  ›  Mark Brackett Achilles Ram Nakirekanti

SQL Server x64和x86链接服务器

  •  2
  • Mark Brackett Achilles Ram Nakirekanti  · 技术社区  · 15 年前

    我有一个visual foxpro表,需要从sql server访问它。在sql server x86中,我只需要创建一个链接服务器。不幸的是,没有vfp的x64驱动程序-因此sqlserverx64无法创建到它的链接服务器。

    到目前为止,我已经提出了以下选择——没有一个是我特别喜欢的:

    1. 设置要用作中继的x86 SQL Server,以便查询从x64->x86->vfp进行。

    我真的不喜欢这个,因为除了作为开发人员,我也是系统管理员。所以,这意味着我需要修补、维护和监视另一个SQL服务器——可能还有另一个服务器(假设我不只是使用单独的实例)。

    另外,由于vfp提供程序不能使用4部分语法,所以我必须使用openquery。考虑到所有的单引号转义都需要将openquery语句嵌入到另一个openquery语句中,这让我头晕目眩……

    1. 创建一个CLR表值函数,尽管程序集(可能?)同样是x64-所以我必须退出程序(IPC?网络服务?)实际运行查询

    结果发现tvfs需要一个模式,所以这个选项不像我最初想象的那么干净。我做了一个spike将wcf客户机导入mssql,它返回一列xml,然后可以用sqlxml数据类型函数对其进行解析。它工作正常,而且实际上比openquery查询好一点,因为它实际上将变量作为参数。这节省了我大部分的单引号和执行舞蹈。

    当然,sql中的wcf是完全不受支持的,而且闻起来像是一个很大的黑客。我对性能和可靠性有相当严重的保留意见。

    1. 停止从sql server到vfp的查询,重写一段好的客户端代码

    显然,这是“正确”的答案。但是,有很多客户机代码依赖于sql server表和vfp表之间的连接。重写这些内容以填充临时表或执行客户端连接似乎是一个相当大的负担。

    希望有人能提出一个更好的选择,或一些类似的经验。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Cade Roux    15 年前

    我同意,这是个棘手的问题。

    如果可以忍受延迟,ssis以32位模式运行以定期(可能是按需,在同一个sp触发的作业中)将数据导入到sql server本机表是另一个选项。这将取决于数据更改的频率和数据有可能稍微过时的问题。

        2
  •  0
  •   jveazey    14 年前

    我想我找到了另一个选择。微软发布了 updated driver for Access ,有32位和64位两种口味。就像最初的Jet OLEDB驱动程序一样,这将允许您 access dBase file formats 从SQL Server x64。

    唯一的限制是dbf必须在其中一个dbase中 formats supported by ISAM . 我已经用dbase iv格式做了一些测试,使用下面的连接字符串似乎可以工作。

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\folder;Extended Properties=dBASE IV;User ID=Admin;Password=;