【发布时间】:2011-05-09 13:29:50
【问题描述】:
我有一个 SSIS 2008 包,它从 Access 数据库(OLEDB 数据源)读取数据并使用它来更新 SQL Server 表。
更新完成后,我希望包删除 Access 数据库。我尝试了一个文件系统任务和一个脚本任务,但都没有工作,因为包保持数据库连接打开。
我收到错误消息:
进程无法访问文件 'C:.....\abc.mdb' 因为它正在 被另一个进程使用。
如何获取包释放数据库连接?
我尝试在 ConnectionManager 对象上调用 Dispose() 方法,但无济于事。我注意到 ConnectionManager 类有一个 ReleaseConnection 方法,但我认为这只会释放使用相关 AcquireConnection 方法创建的新连接。我需要 SSIS 释放它自己的内部连接,以便可以删除 MDB 文件。
有什么建议吗?
提前致谢。
【问题讨论】:
-
你在哪里执行包?从管理工作室内部?或者你是远程调用这个包?这会影响连接的保留方式。
-
从 Visual Studio 内部运行时,它工作正常。但是,当从 Management Studio 运行或通过存储过程远程运行时,它不会释放连接。