最好能够作业实现同步,这个也是第一步,保存成文件,之后个人设想使用powershell 来把作业同步起来 复制代码 代码如下: DECLARE @jobname VARCHAR(30),@category_calss_i INT ,@category_calss VARCHAR(50),@category_name VARCHAR(50) ,@category_type VARCHAR(30),@category_id int ,@category_type_i int SELECT @jobname = "powershell",@category_calss = "",@category_name="",@category_type = ""
SELECT @category_calss = CASE WHEN tshc.category_class = 1 THEN "JOB" WHEN tshc.category_class = 2 THEN "ALERT" else "OPERATOR" END , @category_type = CASE WHEN tshc.category_type = 1 THEN "LOCAL" WHEN tshc.category_type = 2 THEN "MULTI-SERVER" else "NONE" END ,@category_name = tshc.name ,@category_type_i = category_type ,@category_calss_i = tshc.category_class ,@category_id = tshc.category_id FROM msdb.dbo.sysjobs_view AS sv INNER JOIN msdb.dbo.syscategories AS tshc ON sv.category_id = tshc.category_id WHERE (sv.name=@jobname AND tshc.category_class = 1)
PRINT " BEGIN TRANSACTION" PRINT "DECLARE @ReturnCode INT" PRINT "IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N""" + @category_name +"""AND category_class=" +rtrim(@category_calss_i)+")" PRINT "BEGIN" PRINT "EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N"""+ @category_calss+""", @type=N"""+@category_type+""", @name=N"""+@category_name+"""" PRINT "IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback" PRINT "end"
DECLARE @EventLogLevel INT,@EmailLevel INT,@NetSendLevel INT,@PageLevel INT DECLARE @EmailLeveloprid NVARCHAR(256),@NetSendLeveloprid NVARCHAR(256),@PageLeveloprid NVARCHAR(256) DECLARE @isenable INT , @description NVARCHAR(1024),@owner_log_name Nvarchar(512),@delete_level INT DECLARE @jobId UNIQUEIDENTIFIER,@start_step_id INT,@server NVARCHAR(512) SELECT @EventLogLevel=sv.notify_level_eventlog ,@EmailLevel=sv.notify_level_email ,@NetSendLevel=sv.notify_level_netsend ,@PageLevel=sv.notify_level_page ,@EmailLeveloprid = ISNULL((SELECT TOP 1 name FROM msdb..sysoperators WHERE id = sv.notify_email_operator_id),"") ,@NetSendLeveloprid = ISNULL((SELECT TOP 1 name FROM msdb..sysoperators WHERE id = sv.notify_netsend_operator_id),"") ,@PageLeveloprid = ISNULL((SELECT TOP 1 name FROM msdb..sysoperators WHERE id = sv.notify_page_operator_id),"") ,@isenable = sv.enabled ,@description = sv.description ,@owner_log_name = ISNULL(suser_sname(sv.owner_sid), N"""") ,@delete_level = sv.delete_level ,@jobId = sv.job_id ,@start_step_id = start_step_id ,@server = originating_server FROM msdb.dbo.sysjobs_view AS sv WHERE (sv.name=@jobname and sv.category_id=0)
DECLARE @step_id INT declare @step_name nvarchar(512) ,@cmdexec_success_code INT,@on_success_action INT,@on_success_step_id INT ,@on_fail_action INT,@on_fail_step_id INT,@retry_attempts INT,@retry_interval INT,@os_run_priority INT ,@subsystem NVARCHAR(512),@database_name NVARCHAR(512),@flags INT,@command NVARCHAR(max)
DECLARE jbcur CURSOR FOR SELECT step_id FROM msdb..sysjobsteps WHERE job_id = @jobid ORDER BY step_id ; OPEN jbcur; FETCH NEXT FROM jbcur INTO @step_id WHILE @@FETCH_STATUS = 0 BEGIN