SQL Server Job Introductionsql
Wisdom Guo<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />shell
咱們先了解下SQL Server中的Job,而後再看如何進行定時備份,以及如何檢查磁盤空間;數據庫
首先, Job(做業), 是在SQL Server Agent 服務中的,首先,你須要啓用這個服務才能進行做業建立,運行;dom
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />測試
或者,開始菜單中,用 SQL Server Configuration Manager進行啓用:spa
在SQL Server Agent中的Jobs節點下,點擊右鍵: New Job:orm
1. 屬性Job名字;server
2. 在步驟(steps)中,創建做業的具體步驟,這裏能夠用cmd,也能夠用SQL腳原本執行具體的步驟內容;xml
3. 在時間表(schedules)中,創建做業執行的週期時間,如天天一次,每週一次等;blog
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的基本知識,簡單介紹一下。
下面咱們來如何進行磁盤空間查詢:
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位置上了。