首页 文章

Sql Server x64和x86链接服务器

提问于
浏览
2

我有一个Visual FoxPro表,我需要从Sql Server访问 . 在Sql Server x86中,我只想创建一个链接服务器 . 不幸的是,VFP没有x64驱动程序 - 所以Sql Server x64无法创建链接服务器 .

到目前为止,我已经提出了以下选项 - 我并不特别喜欢这些选项:

  • 设置x86 Sql Server以用作中继,以便查询来自x64 - > x86 - > VFP .

我真的不关心这个,因为除了开发之外,我也是系统管理员 . 所以,这意味着我需要修补,维护和监控另一个Sql Server - 可能还有另一个服务器(假设我不只是使用单独的实例) . 此外,由于VFP提供程序不能使用4部分语法,我必须使用OPENQUERY . 考虑所有单引号转义,需要将OPENQUERY语句嵌入到另一个OPENQUERY语句中,这让我头脑发热......

  • 创建一个CLR表值函数,虽然程序集(可能是?)也是x64 - 所以我不得不走出proc(IPC?Webservice?)来实际运行查询

事实证明,TVF需要一个架构,所以这个选项并不像我最初想的那么干净 . 我做了一个尖峰,将一个WCF客户端引入MSSQL,它返回一列XML,然后可以使用Sql XML数据类型函数进行解析 . 它有效,并且实际上比OPENQUERY更好一点,因为它实际上将变量作为参数 . 这节省了我的大部分单引号和EXEC舞蹈 . 当然,Sql中的WCF完全不受支持,闻起来像一个非常大的黑客 . 我对性能和可靠性有很严重的保留意见 .

  • 停止从Sql Server到VFP的查询,并重写一些客户端代码

显然,这是“正确”的答案 . 但是,有很多客户端代码依赖于Sql Server表和VFP表之间的连接 . 重写这些东西来填充临时表或做客户端连接似乎是一个相当大的负担 .

这里希望有人能提出更好的选择,或者类似的经历 .

2 回答

  • 2

    我同意这是一个令人讨厌的问题 .

    SSIS以32位模式运行以定期导入数据(可能是按需,在由同一SP触发的作业中)到SQL Server本机表是另一种选择,如果您可以忍受延迟 . 这取决于数据变化的频率和稍有过时数据的可能性问题 .

  • 0

    我想我找到了另一种选择 . 微软发布了updated driver for Access,它有32位和64位两种版本 . 与原始的Jet OleDB驱动程序一样,这将允许您从SQL Server x64 access dBase file formats .

    唯一的限制是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=;
    

相关问题