什么是MSSQL自动作业?
MSSQL自动作业是一种可以定时执行指定任务的功能,与计划任务类似,但更加灵活方便。它可以在无需手动干预的情况下,按照预先设定好的计划,执行指定的数据库任务。
在MSSQL中,自动作业是由SQL Server代理服务(SQL Server Agent)来管理执行的。可以通过SSMS(SQL Server Management Studio)来管理和配置这里面的自动作业。
如何创建MSSQL自动作业?
第一步:创建一个新的自动作业
使用SSMS打开数据库服务器,展开SQL Server代理服务,右击“自动作业”并选择“新建作业”:
USE [msdb]
GO
EXEC msdb.dbo.sp_add_job @job_name=N'NewJob',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=0,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'This is a new job for MSSQL Server',
@category_name=N'[Uncategorized (Local)]',
@owner_login_name=N'sa',
@job_id = @jobId OUTPUT
SELECT @RetVal = @RetVal + @@error
此时会出现一个“新建作业”对话框,需要设置作业的基本信息。其中,名称和描述是必填项,其余可按照实际情况自行设置。
第二步:创建作业步骤
创建作业步骤相当于给这个自动作业指定需要执行的操作。右击新建好的作业,选择“新建作业步骤”:
USE [msdb]
GO
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'NewStep',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'SELECT 1;',
@database_name=N'master',
@flags=0
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'(LOCAL)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
此时,会出现“新建步骤”对话框,需要设置步骤的基本信息,其中关键步骤是在“命令”框内输入需要执行的SQL脚本。
第三步:设置自动作业的计划
在完成作业步骤的设置后,可以设置该自动作业的执行计划,用来指定何时和如何执行该作业。右击作业,选择“属性”,并切换到“计划”选项卡:
USE [msdb]
GO
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'NewSchedule',
@enabled=1,
@freq_type=8, --日
@freq_interval=1,
@freq_subday_type=1,
@freq_subday_interval=0,
@freq_relative_interval=0,
@freq_recurrence_factor=0,
@active_start_date=20190101,
@active_end_date=99991231,
@active_start_time=0,
@active_end_time=235959,
@schedule_uid=N'01234567-abcd-ef01-2345-fedcba987654'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(LOCAL)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
在“新建作业计划”对话框中,需要设置计划信息,包括作业的频率、时间范围等。其中,频率包括一次、分、小时、日、周、月几种选项。
如何管理和修改MSSQL自动作业?
管理自动作业
使用SSMS打开SQL Server代理服务,展开“自动作业”节点,在这里可以看到已经创建好的自动作业,右击指定的作业可以选择编辑、启动、停止、删除等操作。
修改作业步骤
如果需要修改自动作业的执行步骤,可以右击该自动作业并选择“属性”,在“步骤”选项卡中可以修改相关的设置。
修改作业计划
如果需要修改自动作业的计划,可以右击该自动作业并选择“属性”,在“计划”选项卡中可以修改相关的设置。
如何实现MSSQL自动作业?
MSSQL自动作业可以通过SQL Server代理服务(SQL Server Agent)来实现。在开启SQL Server Agent服务后,使用SSMS可以通过界面操作来创建、管理和执行自动作业。此外,还可以通过使用SQL语句来实现自动作业,包括创建作业、新建作业步骤、设置作业计划等。
总结
MSSQL自动作业是数据库管理中非常重要的一个功能,可以大大提高数据管理的效率。通过本文的介绍,可以看到创建和管理MSSQL自动作业的具体步骤,包括创建自动作业、新建作业步骤、设置作业计划等。同时,使用SQL语句来实现自动作业也是一种非常方便的方式,可以根据实际情况灵活运用。通过学习和掌握这些知识,可以帮助管理员更好地管理和维护数据库。