这里有很多东西要解压...
SSISDB
SSISDB 是用于管理项目部署模型包的定制数据库。众多优势包括:版本化部署、本机包执行、统一的日志记录方法以及简化且安全的配置方法。
SSISDB 存储一个项目(可部署单元具有 .ispac 扩展名)。项目是包、项目参数、项目级连接管理器(如果有)和元数据文件。 MSDB 存储包。
部署包部署模型的机制是进程dtutil.exe。部署项目部署模型的机制是ISDeploymentWizard.exe Visual Studio 将提供将项目部署模型部署到 SSISDB 的过程,但在幕后,该过程将是 ISDeploymentWizard
我不明白您部署到 msdb 以运行维护计划以部署到 SSISDB。这不是我在使用 SSIS 的 15 年和使用项目部署模型的 8 年中遇到的事情。您只需将项目部署到 SSISDB。
执行打包任务
执行包任务是一个包运行另一个包的机制。在 Package Deployment 模型中,您必须通过文件连接管理器或数据库(此处按内存)指定在何处查找包。当您启动它时,您可以指定它是在进程中(等待它完成)还是在进程外(即发即弃)。
在项目部署模型中,您可以选择项目参考包。当你使用它时,你不需要指定包的位置,因为它就在这里,在我们的 .ispac 文件的可部署量中。
如果您考虑包部署模型,我可以有 10 个包都专注于 Visual Studio 项目中的销售功能。它们只是“在一起”,因为我就是这样拥有它们的。一旦 Visual Studio 关闭,它们之间就没有强制/信任关系。我可以将 3 个包部署到文件系统,3 个部署到 SSIS 包存储(也是文件系统,但预定义位置),4 个部署到 msdb。或者也许只是为每个包创建一个自定义文件夹并将所有内容部署到文件系统。关键是,package1 不能假定 package2 与它处于相对位置。
项目部署模型确实确保关系存在于 SSIS 项目范围之外。这使您能够设计在运行或使用共享资源时采用参数的包,例如连接管理器或项目范围的属性(参数)。
您可能有一个包部署模型包,该模型包期望传入运行时变量以覆盖设计时变量,但执行包任务不允许您达到那种粒度级别.
但我想执行一个在不同项目中并使用项目部署模型的包
在这种情况下,您无法执行 Execute Package Task。相反,您将需要一个 OLE/ADO/I-guess-ODBC-would-work-but-would-not-recommend Connection manager to your SSISDB,然后您将触发正确的 TSQL 语句。
- catalog.create_execution
- catalog.set_execution_parameter_value
- catalog.start_execution
如果您想等待子程序包运行,您可能需要其中至少一个带有 SYNCHRONIZED 设置的参数。否则,您将不知道它何时完成。也许这对你的工作没问题。