8 .5 .4 创建计划
2018-08-04 10:54 笑一笑十年少!!! 阅读(321) 评论(0) 编辑 收藏 举报
要自动化维护SQL Server所需执行的许多任务,必须为作业运行时间定义计划。和类 别不一样,计划的创建和管理可以独立于作业的创建和管理。这就可以对多个作业使用相
同的计划。
每一个作业可以有多个计划。例如,可以创建一个执行事务日志备份的作业。如果业
务不是全天候运营的,那么您可能想要创建一个计划,使事务日志在运营时间内较频繁地
备份。以毎两个小时为例。在正常运营时间之外,您可能想继续备份事务日志,但由于下
班后活动减少,对数据库的更改也更少,所以可以每4 小时备份一次。周末时您可能想每
8 小时备份一次事务日志。这并不是说预期会有很多活动,但如果周末时有人来工作,您
希望任何更改都能有一个备份。
还可以根据需要启用或禁用个别计划。当禁用一个计划时,任何使用该计划的作业都
不会按该计划运行。但是,如果作业被配置为使用其他计划,那么它会按那些计划运行。
如果作业本身被禁用,它不会按任何计划运行。
看一看用来管理计划的工具。在第一个例子中,将为在每个周末中午运行的Simple Backup作业创建一个新的计划: (1) 在 “对象资源管理器”中,展开服务器,然后展开“SQLServer代理”节点。 (2) 右 击 “作业”节点,选 择 “管理计划”命令。
(3) 在 “管理计划”窗口中单击“新建”按钮。
(4) 在 “新建作业计划”窗口(如图8-25所示)中,输 入 Weekdays - Noon作为计划名。
(5) 确保计划类型是“重复执行”,并确保计划己启用。
(6) 在 “频率”部分,确保该计划被设置为每周执行。
(7) 选 中 “星期一”、“星期二”、“星期三”、“星期四”和 “星期五”复选框。
(8) 取 消 选 中 “星期日”复选框。
(9) 在 “每天频率”部分选中 标 有 “执行一次,时间为”的单选按钮,将时间设置为
12:01:00 PM。
(10) 设 置 “开始日期”为当前日期,并 选 中 “无结束日期”单选按钮。
(11) 单 击 “确定”按钮。
此时,可以将作业添加至此计划,或通过属性对话椎把计划添加至作业。现在看看这
两个方法。
首先在“管理计划”窗口(应该是打开的,除非已经将其关闭)中应注意到,Weekdays-Noon 计 划 的 “计划中的作业”列包含值0 , 该值同时也是一个超链接。
(1) 单 击 Weekdays—Noon计 划 的 “计划中的作业”列 中 的 数 字 0(注意这是一个超链 接),如 图 8-26所示。
(2) 在 “引用计划的作业”对话框中,选 中 Simple Backup作 业 的 “所选”列中的复选
框(如图8-27所示)。
(3) 单 击 “确定”按钮。注意该计划中的作业数有所增加。
(4) 单 击 “确定”按 钮 关 闭 “管理计划”窗口。
如果想通过“作业属性”对话框将计划添加至作业,应遵循下列步骤:
(1) 在 “对象资源管理器”中,展 开 “作业”文件夹。
(2) 右 击 Poor Performers Report作业并选择“属性”《»
(3) 在 “选择页”部分,单 击 “计划”。
⑷ 在 “计划”列表下,单 击 “选取”按钮(如图8-28所示)。
(5) —个可用计划的列表将会显示。选择Weekdays — Noon计划,然后单击“确定”按钮。 (6) 单 击 “确定”按钮关闭“作业属性”窗口。
注意,也可以在这个窗口中创建一个新的计划。SQL Server 2 0 0 8 ,尤其是SQL Server
Management Studio的好处之一,就是通常有多个选项可以执行一个任务。因此,可以使用 最适合管理需求的工具或方法。
1. sp_add_schedule
也可以使用sp_add_schedule存储过程创建新的计划。当创建新计划时,可以指定表8-12 中所示的参数。
您也许已经明白了为什么SQL Server Management Studio是管理作业和计划的首选方
法。但还是看一个创建新计划的例子。在这个例子中,将创建一个新的计划,它将在周
末每隔8 小时运行关联的作业。我们添加了一些注释帮助说明一些值的含义。
DECLARE Qschguid UNIQUEIDENTIFIER DECLARE @schid INT
EXECUTE msdb.dbo.sp_add_schedule
@schedule_name =*Weekend Schedule', @freq_type = 8 , —— Weekly req_interval =65, -- Combination of Saturday(64) and Sunday(1) @freq_subday_type =8, -- Hours @freq_subday_interval =8, -- specifies that the job runs every 8 hours @freq_recurrence_factor =1, @active_e nd_da t e =20101031, @ act ive_end_t ime =235959, @schedule_uid =@schguid OUTPUT,
@schedule一id =@schid OUTPUT SELECT @schguid as GUID,@schid as ID
2. sp_attach_schedule
创建计划不会把该计划与已创建的任何作业相关,因此要关联它们,可以再次使用SQL
Server Management Studio或使用sp attach schedule存储过程。在使用前面的例子创建计划
之后,它应该返回计划的GLFID和 ID。
在创建计划和作业之间的映射时,可以使用两者的ID或名称。请注意schedulejd是
本地 ID 的一个 int 愤,而不是 uniqueidentifier GUID。
EXECUTE msdb.dbo.sp_attach schedule @schedule_name = 'Weekend Schedule1, @job_name = * Simple Backup';