【问题标题】:Import Data from Excel using SSIS使用 SSIS 从 Excel 导入数据
【发布时间】:2015-06-18 19:15:31
【问题描述】:
我有一个包含 9 个工作表的 Excel 数据源。如果我设置连接管理器的RetainSameConnetion = True,导入需要几秒钟。如果我将该属性设置为False,则大约需要一分钟。到目前为止,一切都很好。但是,在包的最后,我想将 Excel 文件移动到存档文件夹。如果RetainSameConnection 设置为True,则文件被锁定并且无法移动。
脚本中有没有办法释放连接,以便文件可以在最后移动。我试过 DTS.Connections("xxxx").ReleaseConnection(y) 但这似乎不起作用,无论我将 y 的值设置为什么。
【问题讨论】:
标签:
sql-server
import
ssis
【解决方案1】:
没有内置的方法,因为 SSIS 旨在将作业的不同方面分解为多个包,因此不需要在创建它的包中删除连接。
这是基于项目部署模型的,并且是 Microsoft 喜欢说的设计。
现在这是一种非常老套的方法,但由于没有其他人尝试这样做,所以我会试一试。
您需要创建一个虚拟变量(最好是布尔值)。
将连接管理器的 retainsameconnection 属性表达式设置为计算结果为 true 的表达式。 (变量 == 真)
在您需要将文件移动到存档之前添加一个脚本任务,并将布尔变量的值更改为与默认值相反的值。
在您的脚本任务完成后,您的 retainsameconnection 现在应该被评估为 false,并且连接应该断开。
如果一切顺利,连接管理器应该不再希望在整个包执行过程中保留该连接。
不确定您正在运行的投标或 SSDT 版本是否允许对该属性进行实时评估,但值得一试。