SQL2000作业配置管理

 

概述

作业是指被定义的多步执行的任务,每一步都是可能执行的Transact-SQL 语句,代表一个任务。作业是典型的规划任务和自动执行任务。数据库的备份和恢复、数据的复制、数据的导入/导出等都可以被定义成作业,然后在规划的时间由SQL Server Agent 来自动完成。

工作流程

利用 SQL Server 代理程序作业,可以使管理任务自动执行和定期运行。可以手工执行一个作业,也可以对其进行调度,使之响应调度表或警报而运行。

下图显示当 SQL Server 代理程序运行一个作业时,作业执行和作业步骤处理的情况。

 

可以编写作业使其在 Microsoft® SQL Server 的本地实例上运行或在多服务器上运行。要在多个服务器上运行作业,必须设置至少一个主服务器以及一个或更多的目标服务器。

配置

JOB的配置和使用相对简单。现简单介绍如下:

 

 

开始->程序->Microsoft SQL Server->企业管理器->展开服务器->管理->SQL Server 代理->作业

如下图所示:

右击新建作业,如下图:

常规)

新建作业属性(常规),一般记录作业名称、所有者、描述信息。如下图:

Transact-SQL语句:

--定义创建作业

DECLARE @jobid uniqueidentifier

EXEC msdb.dbo.sp_add_job

       @job_name = N'作业名称',

       @job_id = @jobid OUTPUT

--添加目标服务器

DECLARE @servername sysname

SET @servername=CONVERT(nvarchar(128),SERVERPROPERTY(N'ServerName'))

EXEC msdb.dbo.sp_add_jobserver

       @job_id = @jobid,

       @server_name = @servername --使用当前SQL实例

步骤)

新建作业属性->步骤->新建

出现新建作业步骤窗口,常规定义步骤名、类型(一般为TSQL)、数据库(作业步骤在当前数据库)、命令(作业定时执行的SQL语句或存储过程)

高级(一般自定义作业执行结果处理,如:作业成功失败)

如下图:

Transact-SQL语句:

       DECLARE @sql nvarchar(400),@dbname sysname

SELECT @dbname=DB_NAME(),  --作业步骤在当前数据库中执行

@sql=N'--作业步骤内容'  --一般定义的是使用TSQL处理的作业,这里定义要执行的

EXEC msdb.dbo.sp_add_jobstep

       @job_id = @jobid,

       @step_name = N'作业步骤名称',

       @subsystem = 'TSQL', --步骤的类型,一般为TSQL

       @database_name=@dbname,

       @command = @sql

调度)

新建调度,出现新建作业调度窗口(一般用来配置作业调度时间和频次)

如:配置作业每月第一天执行一次。

 Transact-SQL语句:

--创建调度(使用后面专门定义的几种作业调度模板)

EXEC msdb..sp_add_jobschedule

@job_id = @jobid,

@name = N'调度名称',

@freq_type=4,             --每天

@freq_interval=1,          --指定每多少天发生一次,这里是1.

@freq_subday_type=0x8,        --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次

@freq_subday_interval=1,  --重复周期数,这里每小时执行一次

@active_start_date = NULL, --作业执行的开始日期,NULL时表示当前日期,格式为YYYYMMDD

@active_end_date = 99991231,--作业执行的停止日期,默认为99991231,格式为YYYYMMDD

@active_start_time = 00000,  --作业执行的开始时间,格式为HHMMSS

@active_end_time = 235959   --作业执行的停止时间,格式为HHMMSS

通知)

新建作业属性(通知)一般指:作业完成时执行的操作(包括:发邮件、发NetSend网络命令、写日志文件、删除作业等)

 

--调度模板定义

--/*--日调度

EXEC msdb..sp_add_jobschedule

  @job_id = @jobid,

  @name = N'调度名称',

  @freq_type=4,                --每天

  @freq_interval=1,            --指定每多少天发生一次,这里是1.

  @freq_subday_type=0x8,       --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次

  @freq_subday_interval=1,     --重复周期数,这里每小时执行一次

  @active_start_date = NULL,   --作业执行的开始日期,NULL时表示当前日期,格式为YYYYMMDD

  @active_end_date = 99991231, --作业执行的停止日期,默认为99991231,格式为YYYYMMDD

  @active_start_time = 00000,  --作业执行的开始时间,格式为HHMMSS

  @active_end_time = 235959    --作业执行的停止时间,格式为HHMMSS

--*/

 

--/*--周调度

EXEC msdb.dbo.sp_add_jobschedule

  @job_id = @jobid,

  @name = N'调度名称',

  @freq_type = 8,              --每周

  @freq_recurrence_factor = 1, --每多少周执行一次,这里是每周

  @freq_interval = 62,         --在星期几执行,POWER(2,N)表示,N的值为0~6,代表星期日~星期六,如果指定两个,则将值相加,例如,值为65表示在星期天和星期日执行(POWER(2,0)+POWER(2,6))

  @freq_subday_type = 0x8,     --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次

  @freq_subday_interval = 1,   --重复周期数,这里每小时执行一次

  @active_start_date = NULL,   --作业执行的开始日期,NULL时表示当前日期,格式为YYYYMMDD

  @active_end_date = 99991231, --作业执行的停止日期,默认为99991231,格式为YYYYMMDD

  @active_start_time = 00000,  --作业执行的开始时间,格式为HHMMSS

  @active_end_time = 235959    --作业执行的停止时间,格式为HHMMSS

--*/

 

--/*--月调度(X个月的每月几号)

EXEC msdb.dbo.sp_add_jobschedule

  @job_id = @jobid,

  @name = N'调度名称',

  @freq_type = 16,             --每月

  @freq_recurrence_factor = 2, --每多少月执行一次,这里是每2个月

  @freq_interval = 2,          --在执行月的第几天执行,这里是第2

  @freq_subday_type = 0x8,     --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次

  @freq_subday_interval = 1,   --重复周期数,这里每小时执行一次

  @active_start_date = NULL,   --作业执行的开始日期,NULL时表示当前日期,格式为YYYYMMDD

  @active_end_date = 99991231, --作业执行的停止日期,默认为99991231,格式为YYYYMMDD

  @active_start_time = 00000,  --作业执行的开始时间,格式为HHMMSS

  @active_end_time = 235959    --作业执行的停止时间,格式为HHMMSS

--*/

 

--/*--月调度(X个月的相对时间)

EXEC msdb.dbo.sp_add_jobschedule

  @job_id = @jobid,

  @name = N'调度名称',

  @freq_type = 32,             --每月

  @freq_recurrence_factor = 2, --每多少月执行一次,这里是每2个月

  @freq_interval = 9,          --在当月的那个时间执行,1~7=星期日至星期六,8= ,9=工作日,10=周末

  @freq_relative_interval = 1, --在第几个相对时间执行,允许的值为1,2,4,8代表第1~4个相对时间,16表示最后一个相对时间

  @freq_subday_type = 0x8,     --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次

  @freq_subday_interval = 1,   --重复周期数,这里每小时执行一次

  @active_start_date = NULL,   --作业执行的开始日期,NULL时表示当前日期,格式为YYYYMMDD

  @active_end_date = 99991231, --作业执行的停止日期,默认为99991231,格式为YYYYMMDD

  @active_start_time = 00000,  --作业执行的开始时间,格式为HHMMSS

  @active_end_time = 235959    --作业执行的停止时间,格式为HHMMSS

--*/

 

--/*--在特定时候执行的作业调度

EXEC msdb.dbo.sp_add_jobschedule

  @job_id = @jobid,

  @name = N'调度名称',

  @freq_type = 64     --64=SQLServerAgent 服务启动时运行,128=计算机空闲时运行

--*/

 

--/*--只执行一次的作业调度

EXEC msdb..sp_add_jobschedule

  @job_id = @jobid,

  @name = N'调度名称',

  @freq_type=1,                --仅执行一次

  @active_start_date = NULL,   --作业执行的开始日期,NULL时表示当前日期,格式为YYYYMMDD

  @active_start_time = 00000   --作业执行的开始时间,格式为HHMMSS

--*/

以上模版在编写自定义作业的时候,非常有用,在实例时候,主要介绍。

 

作业配置完成后,SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行。

设置方法:

我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.

如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值