|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2004-08-15, 05:44 PM | #1 |
榮譽會員
|
SQL Server資料庫的無監管自動制作備份和恢復計劃及Job
大家都知道資料庫的重要性,因此制作備份和恢復計劃也很重要。
這裡把很久之前寫的Job和大家分享一下,Run了1年多了 總共包括3個Job. 其中兩個Job,一個是完全制作備份,這裡叫做DBBackup吧,另一個是事物日誌的制作備份,就叫做DBLogBackup吧。 另一個Job是恢復的Job叫做RestoreDB吧. 大體上是這樣的. 這裡的資料庫名字叫做 Test 假設2個Server(當然也可以3個server),online的資料庫用名字是A,用來制作備份的server叫做B,用來restore的server也在B上面。 在DBBackup裡面總共包括7個步驟(這個Job是每天晚上的1:00進行): 1,首先是檢查資料庫的完整性(用DBCC Checkdb),成功進行下一步,否則退出。 dbcc checkdb('Test') 2,制作備份資料庫,以資料庫名字和日期命名,成功進行下一步,否則退出。 declare @sql as varchar(200) select @sql='backup database Test to DISK='''+'D:\Test'+convert(varchar(20),getdate(),12)+'.bak''' execute sp_sqlexec @sql 3,Copy 備份檔案到另一個專門的制作備份Server, 成功進行下一步,否則退出。 declare @a as varchar(200) select @a='Test'+convert(varchar(200),getdate(),12)+'.bak' select @a='copy d:\'+@a+' \\B\d$\'+@a exec xp_cmdshell @a 4,Copy 前一天的事物日誌,成功進行下一步,否則退出。 declare @a as varchar(200) select @a='Testlog' select @a='copy /y d:\'+@a+'.bak \\B\d$\'+@a+convert(varchar(200),dateadd(d,-1,getdate()),12)+'.bak' exec xp_cmdshell @a 5,清楚事物日誌,成功進行下一步,否則退出。 backup log Test to Testlog with init 6,移除A上的10天以前的備份檔案,也就是說只保留最近10天的備份檔案(節省server空間)。成功進行下一步,否則退出。 declare @a as varchar(200) select @a='Test'+convert(varchar(200),dateadd(d,-10,getdate()),12)+'.bak' select @a='del d:\'+@a exec xp_cmdshell @a 7,移除制作備份server上的備份檔案,也就是B上面也只保留10天的備份檔案(節省server空間).成功後退出,否則退出。 declare @a as varchar(200) select @a='Test'+convert(varchar(200),dateadd(d,-10,getdate()),12)+'.bak' select @a=' del \\B\d$\'+@a exec xp_cmdshell @a select @a='Testlog'+convert(varchar(200),dateadd(d,-10,getdate()),12)+'.bak' select @a=' del \\B\d$\'+@a exec xp_cmdshell @a 再一個就是用來制作備份事物日誌的Job,DBLogBackup 總共有2個步驟(在每天的清晨1:30開始,每一個小時一次,到晚上11:59:59) 1,制作備份事物日誌,成功進行下一步,否則退出。 backup log Test to TestLog 2,Copy制作備份的事物日誌文件到Server B上面(每一個小時Copy一次)。成功後退出,否則退出。 declare @a as varchar(200) select @a='Testlog.bak' select @a='copy /y d:\'+@a+' \\172.26.6.10\d$\'+@a exec xp_cmdshell @a 最後一個就是恢復到資料庫B上的Job,RestoreDB. 這個Job可以run在B上面。只有1個步驟。 新增的資料庫名字是TestDB use master declare @Path as varchar(200) select @Path ='d:\Test' + convert(char(6),getdate(),12) + '.bak' print @Path RESTORE DATABASE TestDB FROM DISK = @Path with replace, move 'Test_data' to 'd:\TestDB\Testdb_Data.MDF', move 'Test_log' to 'd:\TestDB\Testdb_log.ldf' go 在這2個server上執行的這3個Job需要在共同的Domain中. 並且這2個Server需要用Domain帳號登入,包括每個SQL Server的service也是. 這樣才可以配置SQL Mail.以便用Mail來通知你有沒有成功. 當然了,配置SQL Mail當時也是測試了很久的. |
送花文章: 3,
|
|
|
相似的主題 | ||||
主題 | 主題作者 | 討論區 | 回覆 | 最後發表 |
SQL注入和CSS攻擊的檢測 | psac | 程式 & 網頁設計技術文件 | 1 | 2005-12-27 11:03 AM |
Hack Proofing Your Network-7 | mic64 | 網路軟硬體架設技術文件 | 0 | 2004-07-16 04:41 PM |
Hack Proofing Your Network | mic64 | 網路軟硬體架設技術文件 | 12 | 2004-06-21 03:28 PM |