我正在尝试创建一个 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 假定括号引号字符是可以接受的,但实际上它们不是。我怎样才能说服它不要使用它们?双引号是可以接受的。