SQL Server Job Introduction
Wisdom Guo
我们先了解下SQL Server中的Job,然后再看如何进行定时备份,以及如何检查磁盘空间;
首先, Job(作业), 是在SQL Server Agent 服务中的,首先,你需要启用这个服务才能进行作业创建,运行;
启动服务:
或者,开始菜单中,用 SQL Server Configuration Manager进行启用:
创建Job:
在SQL Server Agent中的Jobs节点下,点击右键: New Job:
1. 属性Job名字;
2. 在步骤(steps)中,建立作业的具体步骤,这里可以用cmd,也可以用SQL脚本来执行具体的步骤内容;
3. 在时间表(schedules)中,建立作业执行的周期时间,如每天一次,每周一次等;
4. 而且可以在失败的时候选择是发邮件啊,还是记录到event log等;
· CmdExec: 就是通过sql server去执行dos 命令;
· T-SQL: 这个就不用说啦,脚本啦
下面我们来看下如何写备份(backup)脚本:
这个是最简单的差异备份方式啦:
Backup database [DatabaseName]
to disk ='D:/db backup/test.bak'
with INIT, differential
然后建立schedule:我们期望每天运行一次,进行备份:
新建schedule,run daily,设置时间。
建立好之后我们就可以测试一下是否正确:

如果出现错误的,使用view History进行查看。
这些都是使用Job的基本知识,简单介绍一下。
检查磁盘空间Job:
下面我们来如何进行磁盘空间查询:
1.使用xp_fixeddrives 查询磁盘空间统计:
declare @FreeSpaceStat table(
DriveLabel char(1)
,FreeMB int)
insert into @FreeSpaceStat exec xp_fixeddrives
2.使用EXEC master.dbo.sp_databases 得到数据库大小统计
注意:一个是以MB为单位,一个是以KB为单位,比较的时候需要转换;
一般:是以数据库大小的2倍作为剩余空间是否足够的标准;
declare @DBSizeStat table(
[name] nvarchar(300)
,[size] int
, remark nvarchar(300))
insert into @DBSizeStat EXEC master.dbo.sp_databases
3.在需要删除的时候,使用:xp_cmdshell 执行dos命令就可以了:
Set @ DeleteString = ‘del c:/1.txt’
exec xp_cmdshell @DeleteString;
Note: 默认,xp_cmdshell 是禁用的,需要reconfigure一下,启用xp_cmdshell,如下:
EXEC master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE
EXEC master.dbo.sp_configure 'xp_cmdshell', 1
RECONFIGURE
然后建立Job,设置step导入以上脚本,然后设置Schedule,搞定。
Note:以下是返回某目录下的文件,以时间排序的命令:
'dir "'+ @BackupDir + '" /b /a-d /o-d'
其中: /o-d 是最老的文件在最上面; /od就是最新的文件在返回列表的Top位置上了。
本文介绍了SQL Server中作业(Job)的概念及如何利用作业实现数据库的定时备份和磁盘空间检查。作业需要在SQL Server Agent服务中创建,并可以通过设置执行步骤、周期时间等参数来完成指定任务。

2666

被折叠的 条评论
为什么被折叠?



