代码之家  ›  专栏  ›  技术社区  ›  William Rose

如何更改SSIS中用于连接ODBC DSN的标识符引号字符

  •  0
  • William Rose  · 技术社区  · 16 年前

    我正在尝试创建一个SSIS 2008数据源视图,该视图通过Ingres的ODBC驱动程序从Ingres数据库读取数据。我下载了ingres10社区版来获取ODBC驱动程序,安装它,在运行SSIS的服务器上设置数据访问服务器和DSN。

    如果连接到运行SSIS的服务器上的SQL Server 2008数据库引擎,则可以通过运行以下命令通过ODBC DSN从Ingres检索数据:

    SELECT *
    FROM OPENROWSET( 'MSDASQL'
                   , 'DSN=IngresODBC;UID=testuser;PWD=testpass'
                   , 'SELECT * FROM iitables')
    

    所以我很确定ODBC的设置是正确的。

    如果我尝试使用SQL Server样式的带括号的标识符引号的同一查询,我会得到一个错误,因为Ingres不支持这种语法。

    SELECT *
    FROM OPENROWSET( 'MSDASQL'
                   , 'DSN=IngresODBC;UID=testuser;PWD=testpass'
                   , 'SELECT * FROM [iitables]')
    

    按照edharper的建议创建一个命名查询似乎也受到了阻碍。如果我在命名查询中输入以下文本:

    SELECT *
    FROM "iitables"
    

    我仍然得到一个错误:“error[5000A][Ingres][Ingres 10.0 ODBC Driver][Ingres 10.0]第2行,意外字符'['。

    根据错误,SSIS传递给ODBC的查询文本为:

    SELECT [iitables].*
    FROM 
    (
    SELECT *
    FROM "iitables"
    )
     AS [iitables]
    

    1 回复  |  直到 16 年前
        1
  •  0
  •   Ed Harper    16 年前

    我不知道如何更改引用的标识符,但是您可以通过创建一个空白的DSV(单击DSV向导而不添加任何表)来解决这个问题,而不是直接将表添加到DSV,将它们作为命名查询添加(右键单击空的DSV并选择“New named Query”)。

    这使您能够自己控制查询的文本,并设置自己的标识符。

    (我是在SSIS 2005的基础上提出这个建议的,但我认为2008年也是这样。)

    推荐文章