我正在从遗留系统到新系统的迁移项目。我们当前的流程是一系列以特定顺序运行的SSIS包。其中一个软件包是调用预先编写的C#代码,该代码已打包并添加到GAC中。然后通过SSIS中的脚本任务调用此代码。 SSIS包只有一个脚本任务和一些变量。变量被加载到包中并发送到驻留在GAC中的其他C#代码。 GAC代码管理与三个数据库和API的连接。在常规控制台应用程序中使用SSIS脚本任务代码我没有收到错误。在SSIS包中,我得到“Timeout expired。在从池中获取连接之前已经过了超时时间。这可能是因为所有池连接都在使用中并且达到了最大池大小。”。此错误不在特定的代码行上。它的任务本身就会返回此错误。
我的问题:SSIS是否有一些超时期限用于限制单个脚本任务的运行时间?如果是这样,它是可配置的吗?
我知道这是一个非常模糊的问题。如果需要,我可以提供代码示例。但是,如果在具有相同代码的Console应用程序中工作,我发现很难相信它是我在GAC中引用的DLL。
<小时/> 更新11/1/2011 9:30 AM东部
@billinkc,我的GAC中只有1个版本。我在调试模式下运行SSIS包(F5)。我可以告诉我正在建立连接,因为我可以看到数据被写入目标表。我会进一步调查
@Filip Popovic,堆栈跟踪来自GAC代码,让我感到惊讶的是,它通过控制台应用程序调用时不会导致任何错误,而是通过SSIS脚本任务执行。我也没有在SSIS中看到任何有关Pool Size的内容。
一位同事有一些想法,我打算今天尝试一下。
<小时/> 更新11/1/2011 1:07 PM东部
奇怪的是,我今天更多地研究了这个。我注意到GAC程序集中的连接没有被重用或关闭。重写这使它在SSIS中起作用。但问题仍然存在。为什么在SSIS中出现此错误而不是控制台应用程序?可能有什么不同?