a1e*_*x07 8 sql-server sql-server-agent
我有许多SQLServer代理预定作业,其中一个执行完整数据库备份.我希望在备份开始时禁用其他一些作业,并在备份完成后重新启用它们.这样做的正确方法是什么?我正在考虑将以下tsql命令之一添加到备份任务的第一步(以及相应的启用命令到最后一步),但我找不到哪一个更好(或者可能有另一种方式).
UPDATE MSDB.dbo.sysjobs
SET Enabled = 0
WHERE [Name] IN (....)
Run Code Online (Sandbox Code Playgroud)
还是一些EXEC dbo.sp_update_job?
谢谢.
绝对使用sp_update_job.如果已调度作业,则直接操作sysjobs表不一定会导致重新计算缓存的计划.
它可能适用于ENABLED标志(尚未尝试过),但我知道它不适用于像start_step_id这样的列.
你必须运行,EXEC dbo.sp_update_job因为你不能直接更新系统表(尽管我不确定 sysjobs 是否仍然算作系统表Mitch 说它可以更新)
我会考虑使用sp_getapplock 和 sp_releaseapplock来“锁定”其他作业,而无需实际更新作业。