我正在尝试创建一个SSIS 2008数据源视图,该视图通过Ingres的ODBC驱动程序从Ingres数据库中读取。我已经下载了Ingres 10 Community Edition以获取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 Driver] [Ingres 10.0]第1行,意外字符'['。”。
我发现当我尝试将Ingres中的表添加到SSIS数据源视图时,我得到了同样的错误。选择ODBC提供程序的第一步工作正常,我显示了要添加的表/视图列表。然后我选择任何表,并尝试将其添加到视图中,并获得“ERROR [5000A] [Ingres] [Ingres 10.0 ODBC Driver] [Ingres 10.0]第3行,意外字符'['。”。
根据Ed Harper关于创建命名查询的建议似乎也受到了阻碍。如果我将以下文本放入我的命名查询中:
SELECT *
FROM "iitables"
我仍然收到错误:“ERROR [5000A] [Ingres] [Ingres 10.0 ODBC驱动程序] [Ingres 10.0]第2行,意外字符'['”。
根据错误,SSIS传递给ODBC的查询文本为:
SELECT [iitables].*
FROM
(
SELECT *
FROM "iitables"
)
AS [iitables]
似乎SSIS假设括号引号字符是可接受的,否则它们是可接受的。我如何说服它不使用它们?双引号是可以接受的。
答案 0 :(得分:0)
我不知道如何更改引用的标识符,但您可以通过创建空白DSV(单击DSV向导而不添加任何表)来解决此问题,而不是将表添加到DSV直接添加为命名查询(右键单击空DSV并选择“新命名查询”。
这使您可以自己控制查询文本,并设置自己的标识符。
(我正在根据SSIS 2005提出这个建议,但我认为2008年的工作方式类似。)