1. 什么是MSSQL计划任务
MSSQL计划任务是一种自动化的方法来在特定的时间或事件条件下执行一个或多个SQL Server任务,这些任务可以是Transact-SQL语句、SQL Server Integration Services(SSIS)包、自定义命令或.NET Framework程序集。
这种自动化的方法可以减少人工干预,降低了出错率,还可以提高系统的可用性和可靠性,MSSQL计划任务可用于执行用户定义的任务、重复的操作、日志调整,还可以以适当的时间间隔执行过程。
2. MSSQL计划任务的优势
2.1 简单易用
通过Microsoft SQL Server Management Studio(SSMS)界面即可轻松设置计划任务,即使您不具备SQL编程经验也能运用。 此外,它也支持脚本,您可以轻松地通过Transact-SQL编写并执行自动化任务。
2.2 强大的功能
MSSQL计划任务还提供了许多强大的功能,包括启用时间表预览、作业优先级、日志复制、跨服务器执行、多服务器管理等。
2.3 可持续性
这种自动化的方法可以节省大量时间和精力,并确保各项任务在发生错误或意外情况时得以自动重新启动。 它还可以节省人手工作时间,使您可以花更多心思来优化和改进MSSQL数据库。
3. 如何使用MSSQL计划任务
MSSQL计划任务可以通过SQL Server Management Studio来简单设置和执行。下面是步骤。
3.1 MSSQL计划任务的创建
步骤1:在“对象资源管理器”窗格中展开“SQL Server代理”文件夹,右键单击“作业”文件夹,选择“新作业”。
步骤2:创建新作业后,进入“新作业”窗口。 在“常规”选项卡上,输入作业名称,并为作业选择一个所有者。
USE [msdb]
GO
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[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'JobName',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=2,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'Description',
@category_name=N'[Uncategorized (Local)]',
@owner_login_name=N'loginName',
@notify_email_operator_name=N'',
@notify_netsend_operator_name=N'',
@notify_page_operator_name=N''
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Step1',
@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'Your SQL script',
@database_name=N'master',
@flags=0
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
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO
4. 如何发布和删除MSSQL计划任务
可以使用一些程序来自动发布和删除MSSQL计划任务。下面是一个使用PowerShell自动发布MSSQL计划任务的示例脚本。
$jobName = 'My Job'
$description = 'My Job Description'
$t = new-object -com('Schedule.Service') $s = $t.connect() $j = $s.getfolder('\').jobs |
where {$_.name -eq $jobName} if($j -ne $null){
$j.Delete()
}
$job = $s.newjob($jobName)
$job.Description = $description
$job.options = $job.options -bor 4
$job.command = 'cmd.exe /c "MyCommand"'
$job.Create('01/01/2050', $true, $true)
下面是一个使用PowerShell自动删除MSSQL计划任务的示例脚本。
$jobName = 'My Job'
$t = new-object -com('Schedule.Service')
$s = $t.connect()
$j = $s.getfolder('\').jobs | where {$_.name -eq $jobName}
if($j -ne $null){
$j.Delete()
}
总结
MSSQL计划任务是一种强大而简单的自动化方法,可帮助您在特定的时间或事件条件下执行SQL Server任务,这种自动化的方法可以在很大程度上减少人工干预,增加可用性和可靠性,让您有更多的时间和精力优化和改进MSSQL数据库。