这是我第一次在 SQL Server 2012 中使用 SSIS。我可以成功读取 excel 文件并将其内容加载到 SQL Server 2012 中的表中。任务是一个简单的直接读取 excel 文件,然后复制到 sql server,无需验证或暂时转型。任务成功了。但是,当我尝试让包从变量而不是原始硬编码变量读取文件名时,它生成错误“DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E4D”
我所做的只是用一个表达式替换 Excel 连接管理器中的硬编码连接字符串,该表达式采用表达式分配的变量值
在数据流任务开始之前为变量分配了值。该变量已被检查并且确实具有正确的值。
但是当数据流任务启动时,产生了以下错误。
如果有人能指出我做错了什么并建议我如何解决问题,我将不胜感激。
Option A
The ConnectionString
Excel 连接管理器的属性不是我操作当前文件的地方,这与普通的平面文件连接管理器不同。
相反,在 Excel 连接管理器的ExcelFilePath
财产。
从理论上讲,ConnectionString 和 ExcelFilePath 之间应该没有区别,只是您需要构建更多“东西”才能获得正确的连接字符串。
另外,请确保您在 32 位模式下执行该包。
Option B
您可能遇到的另一种情况是,连接字符串的设计时值一旦运行就无效。当包开始时,它会验证所有预期的资源是否可用,如果不可用,它会快速失败而不是在负载中死掉。您可以延迟此验证,直到 SSIS 必须实际访问资源为止,并且您可以通过设置DelayValidation
属性为 True。 SSIS 中的所有内容都存在此属性,但我会首先在 Excel 连接管理器上设置它。如果仍然引发包验证错误,请尝试将数据流的延迟验证也设置为 true。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)