sqlserver 使用腳本建立做業
- EXEC msdb.dbo.sp_delete_job
- EXEC msdb.dbo.sp_add_job
- EXEC msdb.dbo.sp_add_jobstep
- EXEC msdb..sp_add_jobschedule
- EXEC msdb.dbo.sp_add_jobserver
- EXEC msdb.dbo.sp_start_job
-
-
-
- IF EXISTS (SELECT JOB_ID FROM MSDB.DBO.SYSJOBS_VIEW WHERE NAME =N'做業名稱')
- EXECUTE MSDB.DBO.SP_DELETE_JOB @JOB_NAME=N'做業名稱'
-
- DECLARE @jobid uniqueidentifier
- EXEC msdb.dbo.sp_add_job
- @job_name = N'做業名稱',
- @job_id = @jobid OUTPUT
-
- DECLARE @sql nvarchar(400),@dbname sysname
- SELECT @dbname=DB_NAME(),
- @sql=N'做業步驟內容'
- EXEC msdb.dbo.sp_add_jobstep
- @job_id = @jobid,
- @step_name = N'做業步驟名稱',
- @subsystem = 'TSQL',
- @database_name=@dbname,
- @command = @sql
-
- EXEC msdb..sp_add_jobschedule
- @job_id = @jobid,
- @name = N'調度名稱',
- @freq_type=4,
- @freq_interval=1,
- @freq_subday_type=0x8,
- @freq_subday_interval=1,
- @active_start_date = NULL,
- @active_end_date = 99991231,
- @active_start_time = 00000,
- @active_end_time = 235959
-
- DECLARE @servername sysname
- SET @servername=CONVERT(nvarchar(128),SERVERPROPERTY(N'ServerName'))
- EXEC msdb.dbo.sp_add_jobserver
- @job_id = @jobid,
- @server_name = @servername
-
-
- EXEC msdb..sp_add_jobschedule
- @job_id = @jobid,
- @name = N'調度名稱',
- @freq_type=1,
- @active_start_date = NULL,
- @active_start_time = 00000
-
- EXEC msdb..sp_add_jobschedule
- @job_id = @jobid,
- @name = N'調度名稱',
- @freq_type=4,
- @freq_interval=1,
- @freq_subday_type=0x8,
- @freq_subday_interval=1,
- @active_start_date = NULL,
- @active_end_date = 99991231,
- @active_start_time = 00000,
- @active_end_time = 235959
-
- EXEC msdb.dbo.sp_add_jobschedule
- @job_id = @jobid,
- @name = N'調度名稱',
- @freq_type = 8,
- @freq_recurrence_factor = 1,
- @freq_interval = 62,
- @freq_subday_type = 0x8,
- @freq_subday_interval = 1,
- @active_start_date = NULL,
- @active_end_date = 99991231,
- @active_start_time = 00000,
- @active_end_time = 235959
-
- EXEC msdb.dbo.sp_add_jobschedule
- @job_id = @jobid,
- @name = N'調度名稱',
- @freq_type = 16,
- @freq_recurrence_factor = 2,
- @freq_interval = 2,
- @freq_subday_type = 0x8,
- @freq_subday_interval = 1,
- @active_start_date = NULL,
- @active_end_date = 99991231,
- @active_start_time = 00000,
- @active_end_time = 235959
-
- EXEC msdb.dbo.sp_add_jobschedule
- @job_id = @jobid,
- @name = N'調度名稱',
- @freq_type = 32,
- @freq_recurrence_factor = 2,
- @freq_interval = 9,
- @freq_relative_interval = 1,
- @freq_subday_type = 0x8,
- @freq_subday_interval = 1,
- @active_start_date = NULL,
- @active_end_date = 99991231,
- @active_start_time = 00000,
- @active_end_time = 235959
-
- EXEC msdb.dbo.sp_add_jobschedule
- @job_id = @jobid,
- @name = N'調度名稱',
- @freq_type = 64
-
- IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'[DBO].SP_AUTO_CREATEJOB') AND OBJECTPROPERTY(ID, N'ISPROCEDURE') = 1)
- DROP PROCEDURE [DBO].SP_AUTO_CREATEJOB
- GO
-
- CREATE PROCEDURE DBO.SP_AUTO_CREATEJOB
- @DBNAME VARCHAR(100),
- @JOBNAME VARCHAR(100),
- @EXECSQL NVARCHAR(4000)
- AS
- PRINT '----做業 :'+@JOBNAME
- PRINT '----開始執行:' +@EXECSQL
-
- BEGIN TRANSACTION
- DECLARE
- @JOBID UNIQUEIDENTIFIER,
- @RETURNCODE INT
- SELECT @RETURNCODE = 0
- BEGIN
- IF EXISTS (SELECT JOB_ID FROM MSDB.DBO.SYSJOBS_VIEW WHERE NAME =@JOBNAME)
- EXECUTE MSDB.DBO.SP_DELETE_JOB @JOB_NAME=@JOBNAME
-
- EXECUTE @RETURNCODE = MSDB.DBO.SP_ADD_JOB
- @JOB_NAME = @JOBNAME,
- @ENABLED = 1,
- @OWNER_LOGIN_NAME = 'SA',
- @JOB_ID = @JOBID OUTPUT
- IF (@@ERROR <> 0 OR @RETURNCODE <> 0) GOTO QUITWITHROLLBACK
-
- EXECUTE @RETURNCODE = MSDB.DBO.SP_ADD_JOBSTEP
- @JOB_ID = @JOBID,
- @STEP_NAME = N'STEP1',
- @SUBSYSTEM = 'TSQL',
- @DATABASE_NAME = @DBNAME,
- @COMMAND = @EXECSQL
- IF (@@ERROR <> 0 OR @RETURNCODE <> 0) GOTO QUITWITHROLLBACK
-
- EXECUTE @RETURNCODE = MSDB.DBO.SP_UPDATE_JOB
- @JOB_ID = @JOBID,
- @START_STEP_ID = 1
- IF (@@ERROR <> 0 OR @RETURNCODE <> 0) GOTO QUITWITHROLLBACK
-
- EXECUTE @RETURNCODE = MSDB.DBO.SP_ADD_JOBSERVER
- @JOB_ID = @JOBID,
- @SERVER_NAME = N'(LOCAL)'
- IF (@@ERROR <> 0 OR @RETURNCODE <> 0) GOTO QUITWITHROLLBACK
-
- END
- COMMIT TRANSACTION
-
- GOTO ENDSAVE
-
- QUITWITHROLLBACK:
- IF (@@TRANCOUNT > 0)
- BEGIN
- ROLLBACK TRANSACTION
- RETURN 1
- END
-
- ENDSAVE:
- EXEC @RETURNCODE = MSDB.DBO.SP_START_JOB @JOB_ID = @JOBID
- RETURN @RETURNCODE
歡迎關注本站公眾號,獲取更多信息