SQL Server 通过JOB来定期获取数据库相关性能数据—JOB介绍

今天公司DBA提供了一套脚本,方便在SQL Server中利用JOB来获取性能相关数据,网上翻了下,找到两篇不错的JOB相关说明,链接如下:

SQL SERVER 中如何用脚本管理作业:http://www.tuicool.com/articles/muMJV3I
如何修改 SQL Server 代理主作业 (Transact-SQL):http://www.cnblogs.com/accumulater/p/6223912.html


这里附上对应的JOB脚本:

USE [msdb]
GO


/****** Object:  Job [SP_Monitor_BlockSql 监控脚本10秒]    Script Date: 2017/4/19 10:48:28 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object:  JobCategory [[Uncategorized (Local)]]]    Script Date: 2017/4/19 10:48:29 ******/
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'SP_Monitor_BlockSql 监控脚本10秒', -- 添加作业
@enabled=1, 
@notify_level_eventlog=0, 
@notify_level_email=0, 
@notify_level_netsend=0, 
@notify_level_page=0, 
@delete_level=0, 
@description=N'无描述。', 
@category_name=N'[Uncategorized (Local)]', 
@owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object:  Step [SP_Monitor_BlockSql]    Script Date: 2017/4/19 10:48:30 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'SP_Monitor_BlockSql', -- 添加作业步骤
@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'EXEC dbo.SP_Monitor_BlockSql', 
@database_name=N'Monitor_DB', 
@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_jobschedule @job_id=@jobId, @name=N'5SS',  -- 创建一个可由任意数量的作业使用的计划
@enabled=1,  -- 1启用, 0不启用
@freq_type=64, -- 1 = 一次 4 = 每天 8 = 每周 16 = 每月 32 = 每月,相对于 freq_interval; 64 SQLServerAgent 服务启动时运行; 128 计算机空闲时运行
@freq_interval=1, -- 执行作业的天数。这个值会需要结合 freq_type 值而不同
@freq_subday_type=2, -- freq_subday_interval 的单位 0x1:定时;2:秒钟 0x4:分钟 0x8:小时 
@freq_subday_interval=10, -- 10秒钟
@freq_relative_interval=0, --freq_type=32的情况下才有意义
@freq_recurrence_factor=0, -- 作业的两次计划执行之间的间隔周数或月数。只有 freq_type 为 8、16 或 32 时,才会使用 freq_recurrence_factor。freq_recurrence_factor 的数据类型为 int,默认值为0
@active_start_date=20170123, --作业的开始执行时间
@active_end_date=99991231, -- 作业的停止时间
@active_start_time=0, -- 指示 24 小时制的上午12:00:00,并且必须使用 HHMMSS 的格式输入
@active_end_time=235959, 
@schedule_uid=N'829264f9-d77f-4440-a6a3-e4934889ba1b'
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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值