SQL2005自動(dòng)定時(shí)備份數(shù)據(jù)庫(kù)并按日期命名
SQL2005的維護(hù)計(jì)劃里面自帶了備份數(shù)據(jù)庫(kù)任務(wù),但不會(huì)自動(dòng)按日期命名,不方便,下面的方法是以存儲(chǔ)過程來解決的。
要用SQL2005的維護(hù)計(jì)劃功能首先要確認(rèn)SQL Server Agent服務(wù)是在啟動(dòng)狀態(tài),然后打開SQL Server Management Studio,展開對(duì)象資源管理器里的“管理”,右擊維護(hù)計(jì)劃選擇新建維護(hù)計(jì)劃,為維護(hù)計(jì)劃命名,如:TestDB_Backup,選擇默認(rèn)的子計(jì)劃“Subplan_1 ”并點(diǎn)擊上方的子計(jì)劃設(shè)置按鈕來設(shè)置子計(jì)劃執(zhí)行方式和時(shí)間:
出現(xiàn)設(shè)置界面,設(shè)置每天3點(diǎn)執(zhí)行一次,如圖
確定后保存一下,然后新建一個(gè)查詢頁(yè),開始創(chuàng)建存儲(chǔ)過程,代碼如下:
USE [TestDB]
02.GO
03.SET ANSI_NULLS ON
04.GO
05.SET QUOTED_IDENTIFIER ON
06.GO
07.CREATE PROCEDURE [BackupDatabase](@FolderPath varchar(500))
08.as
09.DECLARE @FullPath varchar(1000)
10.set @FullPath = @FolderPath+ 'TestDB_'+convert(VARCHAR(4),year(getdate()))+right( '0'+convert(VARCHAR(2),MONTH(getdate())),2)+right('0'+convert(VARCHAR(2),DAY(getdate())),2)+ '.bak'
11.backup database [TestDB] to disk=@FullPath WITH INIT
12.return
設(shè)置完畢,切換回維護(hù)計(jì)劃設(shè)置頁(yè)面,在左邊的工具箱中拖入一個(gè)“執(zhí)行T-SQL語(yǔ)句任務(wù)”:
雙擊拖入后的“執(zhí)行T-SQL語(yǔ)句任務(wù)”,輸入執(zhí)行存儲(chǔ)過程的語(yǔ)句來完成每天的自動(dòng)備份工作,代碼如下:
1.use [TestDB]
2.exec BackupDatabase 'E:\SqlData\TestDB\'
確定后保存該維護(hù)計(jì)劃即可。為了保證該維護(hù)計(jì)劃不會(huì)出現(xiàn)問題,可以先執(zhí)行一下以上語(yǔ)句測(cè)試一下。
SQL2000下使用此方法與SQL2005大同小異。
一.使用SQL Server2005自動(dòng)備份數(shù)據(jù)庫(kù)的步驟
1.啟動(dòng)Sql Server Agent 服務(wù)
2.創(chuàng)建作業(yè)
3.添加常規(guī)
4.添加步驟
5.添加計(jì)劃,設(shè)置頻率,時(shí)間等
二.每個(gè)步驟的詳細(xì)操作
1.啟動(dòng)Sql Server Agent 服務(wù) (可在運(yùn)行中打開:services.msc)
打開【配置工具】中的【SQL Server Configuration Manager】窗口,點(diǎn)擊【SQL Server配置管理器(本地)】--【SQL Server2005 服務(wù)】,右面窗口顯示的是當(dāng)前所有服務(wù)的運(yùn)行狀態(tài),右鍵點(diǎn)擊【SQL Server Agent】選擇啟動(dòng)菜單。
SQL Server Agent簡(jiǎn)介:http://zhidao.baidu.com/question/41264786.html
2.創(chuàng)建作業(yè)
打開【Management Studio】,展開SQL Server代理,右鍵點(diǎn)擊【作業(yè)】選擇【新建作業(yè)】菜單?!具x擇頁(yè)】中選擇【常規(guī)】
3.添加常規(guī)
在2中的【選擇頁(yè)】中選擇【常規(guī)】選項(xiàng),輸入作業(yè)名稱
4.添加步驟
在2中的【選擇頁(yè)】中選擇【步驟】,點(diǎn)擊窗口下方的【新建】按鈕,輸入步驟名稱、選擇操作數(shù)據(jù)庫(kù)。在命令輸入框中輸入作業(yè)執(zhí)行的T-SQL語(yǔ)句,這里備份的語(yǔ)句如下:
****************************************************************
DECLARE @strPath NVARCHAR(200)
set @strPath = convert(NVARCHAR(19),getdate(),120)
set @strPath = REPLACE(@strPath, ':' , '.')
set @strPath = 'F:\工作資料\DB自動(dòng)備份\' + @strPath + '.bak'
BACKUP DATABASE [xscydepot] TO DISK = @strPath WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT
*****************************************************************
有關(guān)WITH 后面的參數(shù)值的含義,請(qǐng)參考:
http://msdn.microsoft.com/zh-cn/library/ms186865.aspx
其中DATABASE [zwjb_10_28]的zwjb_10_28是要備份的數(shù)據(jù)庫(kù),@strPath備份的完成路徑
還原數(shù)據(jù)庫(kù):restore database [數(shù)據(jù)庫(kù)名] from disk=[磁盤路徑]
WITH
NOINIT:不重寫備份集的參數(shù)
NOUNLOAD:
* convert:函數(shù)簡(jiǎn)介:按照地區(qū)代碼格式化時(shí)間的輸入格式
convert(NVARCHAR(19),getdate(),120)
例如:SELECT CONVERT(nvarchar(19), getdate(), 120),
輸出為:2008-11-29 15:45:59
* REPLACE ( 'string_expression_r1' , 'string_expression_r2' , 'string_expression_r3' )
用第三個(gè)表達(dá)式替換第一個(gè)字符串表達(dá)式中出現(xiàn)的所有第二個(gè)指定字符串表達(dá)式的匹配項(xiàng)。
替換':' 是因?yàn)槁窂街杏?/span>':'會(huì)報(bào)錯(cuò)
5.添加計(jì)劃
在2中的【選擇頁(yè)】中選擇【計(jì)劃】選項(xiàng),點(diǎn)擊【新建】按鈕。
輸入名稱、執(zhí)行頻率、每天頻率。例如:要每天的凌晨自動(dòng)備份數(shù)據(jù)庫(kù),執(zhí)行頻率選擇每天、每天頻率選擇‘執(zhí)行一次’執(zhí)行時(shí)間:0:00:00,持續(xù)時(shí)間:選擇開始時(shí)間,不選結(jié)束時(shí)間。這樣SQL Server會(huì)在每天凌晨自動(dòng)執(zhí)行這個(gè)作業(yè),將數(shù)據(jù)庫(kù)備份到D:\bak\的目錄下,備份的文件名為:ZWJB2008-11-29 15-59-15.bak
聯(lián)系客服