如何让变量的SSIS Excel Source SQL命令在包执行中起作用,而不仅仅是预览?

omqzjyyz  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(127)

我的excel文件遵循相同的表结构,但文件名和工作表名不同(通常是由于日期)。**我不能使用脚本任务。**我已经成功地按照上面的例子here加载文件,而不管sheetname和file name。但是,我遇到了一个新的错误,该例子的工作时,列名在第一行,但当他们都开始在不同的行,因此需要来自变量的SQL命令,该示例不起作用。
我使用的变量是“SELECT * FROM [”+ @[User::SheetName] +“A9:AB 99999]”,相当于SELECT * FROM [Bdx-Nov $A9:AB 999999]。我严格按照示例中的每一步操作,但当使用此变量而不是仅使用sheetname变量时,包返回以下错误:
OLE DB记录可用。源:“Microsoft Access数据库引擎”结果:0x 80004005描述:Microsoft Access数据库引擎找不到对象“”Bdx-Nov $'A9:AB 99999““。请确保该对象存在,并且其名称和路径名拼写正确。如果”“Bdx-Nov $' A9:AB 99999”"不是本地对象,请检查网络连接或与服务器管理员联系。错误:数据流任务中的0xC 020204 A-加载文件,Excel源[14]:无法从数据源检索列信息。请确保数据库中的目标表可用。
但是使用sql命令变量进行预览确实有效,有什么见解可以解决这个问题吗?

mw3dktmi

mw3dktmi1#

我仍然没有找出错误的根本原因,但是与上面链接的指南一起使用的解决方案是使用表变量,而不是来自变量的SQL命令。
因此,不要创建一个如下所示的变量:SELECT * FROM Sheet1$A9:AG我创建了一个变量,如下所示:@[用户::工作表名称] +“A9:AG”=工作表1$A9:AG
原来的问题是变量中的sql命令将在excel源代码中预览,但包执行将返回错误,指出它找不到这样的工作表。现在有了表变量,预览和包执行工作。

相关问题