我正在为一个客户端开发一个项目,该项目涉及一个非常庞大的 ETL 过程,用于将数据从 MSSQL Server 移动到 Postgres。我们使用 SSIS 2014 和 postgresql.org 上提供的 ODBC 驱动程序,并设置了 ODBC DSN。我们只使用内置的 OLEDB 源和 ODBC 目标,并且遇到了一个我无法在其他任何地方在线找到引用的问题。
确切的问题是 SSIS 似乎为每个 ODBC 目标数据流组件打开了多个连接,即使启用了连接池。这可能会导致打开 50 多个空闲连接,这些连接在进程完成之前不会被终止。从 Visual Studio 预览数据也会导致连接泄漏,只有在重新启动 Visual Studio 时才会终止。我们已通过将最大连接数增加到 1000 来暂时解决此问题,但我们希望尽可能解决根本问题。
我已经进行了大量的实验,问题似乎与 SSIS 相关,而不是驱动程序中的错误。
有没有其他人遇到过类似的问题并知道如何解决这个问题?
编辑:认为这不会是一个大问题,但现在我意识到当 SSIS 包也从集成服务运行时 ODBC 连接正在泄漏。我通过制作一些空包并仅添加一个 ODBC 源和一个仅从 C# 脚本任务访问数据库的包来玩弄它;只有 ODBC 源/目标导致泄漏,而不是脚本组件,所以它似乎是 SSIS 中的一个错误,而不是我的脚本任务或 postgres 驱动程序:O
除了重写整个包以不使用 ODBC 源/目标(或其他一些奇怪的事情,例如使用 shell 脚本杀死所有连接)之外,任何人都知道如何解决这个问题?