0
jobnameとcreate jobステートメントを使用してジョブを作成するselectステートメントを作成しようとしています。そのselectステートメントから、createステートメントを選択することができます。これは、後で別のサーバーにコピーして貼り付けることによって、ジョブ作成に使用できます。複数のステップを使用できる場合、複数のステップでSQL ServerでJOBスクリプトを作成する
私は以下のスクリプトを使用してこれを試しました。
select @@SERVERNAME,sj.name, '
USE [msdb]
GO
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=''[Uncategorized (Local)]'' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=JOB, @type=LOCAL, @name=''[Uncategorized (Local)]''
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'''+sj.name+''',
@enabled='+convert(varchar(20),sj.enabled)+',
@notify_level_eventlog='+convert(varchar(20),sj.notify_level_eventlog)+',
@notify_level_email='+convert(varchar(20),sj.notify_level_email)+',
@notify_level_netsend='+convert(varchar(20),sj.notify_level_netsend)+',
@notify_level_page='+convert(varchar(50),sj.notify_level_page)+',
@delete_level='+convert(varchar(50),sj.delete_level)+',
@description=N'''+convert(varchar(50),sj.description)+''',
@category_name=''[Uncategorized (Local)]'',
@owner_login_name='''', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @[email protected], @step_name=N'''+convert(varchar(50),sjs.step_name)+''',
@step_id='+convert(varchar(50),sjs.step_id)+',
@cmdexec_success_code='+convert(varchar(50),sjs.cmdexec_success_code)+',
@on_success_action='+convert(varchar(50),sjs.on_success_action)+',
@on_success_step_id='+convert(varchar(50),sjs.on_success_step_id)+',
@on_fail_action='+convert(varchar(50),sjs.on_fail_action)+',
@on_fail_step_id='+convert(varchar(50),sjs.on_fail_step_id)+',
@retry_attempts='+convert(varchar(50),sjs.retry_attempts)+',
@retry_interval='+convert(varchar(50),sjs.retry_interval)+',
@os_run_priority='+convert(varchar(50),sjs.os_run_priority)+', @subsystem=N'''+convert(varchar(50),sjs.subsystem)+''',
@command=N'''+convert(varchar(50),sjs.command)+''',
@database_name=N'''+'master'+''',
@flags='+convert(varchar(50),sjs.flags)+'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'''[email protected]@SERVERNAME+'''
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO'
from msdb.dbo.sysjobs sj inner join msdb.dbo.sysjobsteps sjs
ON sj.job_id=sjs.job_id
where subsystem='TSQL'
そして、ジョブを正常に作成できました。
私は上記の生成されたスクリプトに複数のステップも含まれるようにステップを生成できるスクリプトが必要です。