Sql server 从64位SQL Server到Informix数据源的ODBC连接

Sql server 从64位SQL Server到Informix数据源的ODBC连接,sql-server,informix,Sql Server,Informix,我试图在64位SQL Server中创建一个到Informix的链接表,而SQL Server在DSN列表中没有列出Informix ODBC。我已经下载了64位Informix客户端SDK,但是,尽管它声明了64位Informix客户端SDK,但它只出现在32位ODBC DSN中。我尝试在32位SQL Server中创建一个链接表,然后可以看到Informix ODBC DDN 我只是想知道是否有一个Informix客户端SDK会显示在64-ODBC DSN中,而不是32位DSN中 还有一种方

我试图在64位SQL Server中创建一个到Informix的链接表,而SQL Server在DSN列表中没有列出Informix ODBC。我已经下载了64位Informix客户端SDK,但是,尽管它声明了64位Informix客户端SDK,但它只出现在32位ODBC DSN中。我尝试在32位SQL Server中创建一个链接表,然后可以看到Informix ODBC DDN

我只是想知道是否有一个Informix客户端SDK会显示在64-ODBC DSN中,而不是32位DSN中

还有一种方法可以将64位SQL Server链接到Informix吗?
谢谢。

在SQL Server中创建到Informix的DB链接

我使用了以下软件环境:

  • SQL Server 2012
  • Informix SDK 4.10 FC2
  • Informix 11.5
首先为Ifxoledbc驱动程序设置一些属性:

然后创建链接服务器:

常规设置-数据源是您的数据库和服务器名称

安全设置-添加有效的Informix数据库凭据

服务器选项-将RPC和RPC Out设置为True


我使用db链接调用Informix中的存储过程并将数据写入SQL Server

您是否使用64位版本的ODBCAD32.EXE创建DSN

ODBC管理员有两个版本

这是32位版本:

C:\Windows\SysWOW64\odbcad32.exe
C:\Windows\System32\odbcad32.exe
它只能看到32位驱动程序,并且只有32位进程可以看到它的DSN

这是64位版本:

C:\Windows\SysWOW64\odbcad32.exe
C:\Windows\System32\odbcad32.exe
它只能看到64位驱动程序,并且只有64位进程(即SQL Server 64位)可以看到它的DSN


更好的是,您可以定义一个不使用DSN的无DNS连接,它直接使用驱动程序。这样你就可以完全避免这一令人困惑的步骤。

我本来会使用评论功能,但我没有足够的“声誉点数”来这样做

上面提到的SGeis的答案是关于钱的。我很难找到这样一个明确、直截了当的答案。对话框的快照非常有用

让我补充他的回答如下:

  • 数据源填写(YourDatabaseName@YourInformixServerName)可能很简单Fred@Barney,而不是我所尝试的,Fred@199.188.77.66或Fred@199.188.77.66:32002(后者指定端口/服务编号)

  • 创建链接服务器后,如果返回到其常规属性页面,您将看到无法编辑为链接服务器、产品名称(为什么不称为“提供商名称”,因为Ifxoledbc列在对象浏览器树中的链接服务器/提供商下)、数据源等键入的内容。因此,如果您的连接因输入错误而失败,则不清楚如何修复

  • 以下是您可以做的:

  • 右键单击链接的服务器

  • 在“测试连接”下面,查找“脚本链接服务器为”

  • 单击后者,然后单击以下各项:“拖放并创建到” 和“新建查询编辑器窗口”

  • 在显示的脚本文本中,为那些灰显且不可编辑的设置键入替换信息

  • 按F5运行脚本,从而应用更改。这样做会删除现有的链接服务器,并创建一个新的链接服务器

  • 打开链接服务器的安全属性页面,重新输入任何连接密码(即使相应条目中可能会出现星号,表示密码已填写且正确)。此外,请检查“常规属性”页面。请确保您的更改被卡住。即使您运行了脚本并没有收到任何错误,但如果您(如我所做的)患有脑动脉瘤并为“提供者”选择了错误的下拉项,SQL Server将清空诸如“链接服务器”、“产品名称”和“数据源”之类的填写

  • 如上所述,单击“测试连接”,以验证更改是否有效


  • 我能够在没有Ifxoledbc的情况下设置链接服务器。设置64位ODBC驱动程序的系统DSN(测试正常)后,我使用Microsoft OLE DB Provider for ODBC驱动程序设置了一个链接服务器

    链接服务器:UCCX
    提供程序:用于ODBC驱动程序的Microsoft OLE DB提供程序
    产品名称:IBM Informix ODBC驱动程序(可能是任何东西,但我将其命名为与ODBC驱动程序相同的名称,并且它工作正常)。
    数据源:UCCX(系统DSN的名称)

    在安全选项卡上,我将本地登录映射到与系统DSN本身中设置的相同的远程用户/密码

    另一种使用系统DSN的方法是通过OPENROWSET。即使不设置链接服务器,也可以这样做:

    select *
    from    openrowset('MSDASQL', 'DSN=UCCX', '
                select * from ContactCallDetail
                where   StartDateTime >= ''2017-03-10 00:00:00''
                and     StartDateTime < ''2017-04-10 00:00:00''
                limit 10'
            ) p
    
    选择*
    从openrowset('MSDASQL','DSN=UCCX','
    从ContactCallDetail中选择*
    其中StartDateTime>=“2017-03-10 00:00:00”
    和起始日期<''2017-04-10 00:00:00''
    限制10'
    )p
    
    起首部分我称之为伟大的答案!!好。。。是和否。它确实提供了从SQL Server到Informix的连接,但它使用了Informix的OLE DB提供程序(
    Ifxoledbc
    ),而不是请求的ODBC连接。(SQL Server是一个OLE DB客户机应用程序,而不是ODBC客户机应用程序;当您告诉SQL Server以ODBC DSN为目标时,它会无形中使用Microsoft OLE DB Provider for ODBC来弥补协议差距。)哈!我喜欢这样,你就可以完全避免这一令人困惑的步骤了如果你问我的话,整个过程令人困惑!是的,7个容易混淆的步骤并不比8个容易混淆的步骤容易混淆。