我有一个有效的模板 SSIS 包(实际上是一个维护计划),它被复制并用作新维护计划的基础。
在这个包中有一个包含许多任务的序列(或子计划)。
我知道我可以在 BIDS 中更改包裹的 ID,即:
但是我无法更改子计划序列的 ID,该 ID 是灰色的:
SQL Server 2005 或 2008(R2) 的 BIDS 均不允许我更改此值。
有没有办法做到这一点?
理由:
为了给您一些背景知识,这些包会自动安装在使用dtutil
. 然后运行一个脚本来为包创建一个 SQL 代理作业。该脚本的一部分执行名为msdb.dbo.sysmaintplan_subplans
. 此存储过程用于连接作业、计划和子计划之间的点。
例如:
EXEC @ReturnCode = msdb.dbo.sp_maintplan_update_subplan
@subplan_id = @thesubplanid,
@plan_id = @theplanid,
@name= @subplanname,
@description = 'Created by Provisioner',
@job_id = @jobid,
@schedule_id = @jobscheduleid_out,
@allow_create = 1
@plan_id
是包 ID,@subplan_id
是序列或子计划 ID,如上面的屏幕截图所示。
sysmaintplan_subplans
向表中添加一条记录msdb.dbo.sysmaintplan_subplan
,但主键是subplan_id
. 这就是为什么我需要能够在 BIDS 中更改子计划的 ID。
看看BIDSHelper。每个开发 SSIS 和 SSAS 的人都应该使用的神奇的免费工具。
重置 GUID
“此功能重置所有任务、连接管理器、配置、事件处理程序、变量和包 ID 本身的 ID。当您复制包时,两个包中的对象最终具有相同的 ID。此重置 GUID功能可确保当前包中的 ID 是唯一的。”