0

我正在尝试创建一个 SSIS 2008 数据源视图,该视图通过 Ingres 的 ODBC 驱动程序从 Ingres 数据库中读取。我已经下载了 Ingres 10 社区版以获取 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]')

错误是“[Ingres][Ingres 10.0 ODBC 驱动程序][Ingres 10.0] 第 1 行,意外字符 '['。”。

我发现当我尝试将表从 Ingres 添加到 SSIS 数据源视图时,我得到了同样的错误。选择 ODBC 提供程序的初始步骤工作正常,我会看到要添加的表/视图列表。然后我选择任何表,并尝试将其添加到视图中,并得到“错误 [5000A] [Ingres][Ingres 10.0 ODBC Driver][Ingres 10.0]line 3, Unexpected character '['.”。

遵循 Ed Harper 关于创建命名查询的建议似乎也受到了阻碍。如果我在我的命名查询中输入以下文本:

SELECT *
FROM "iitables"

我仍然收到错误消息:“错误 [5000A] [Ingres][Ingres 10.0 ODBC 驱动程序][Ingres 10.0] 第 2 行,意外字符 '['”。

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

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

似乎 SSIS 假定括号引号字符是可以接受的,但实际上它们不是。我怎样才能说服它不要使用它们?双引号是可以接受的。

4

1 回答 1

0

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

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

(我根据 SSIS 2005 提出这个建议,但我认为 2008 的工作方式类似。)

于 2010-04-23T08:15:19.870 回答