MS SQL2000數據庫自動備份的幾種方法
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
一、簡單實用的備份方法: 企業管理器中的Tools,Database Maintenance Planner,可以設置數據庫的定期自動備份計劃。并通過啟動Sql server Agent來自動運行備份計劃。具體步驟如下: 1、打開企業管理器,在控制臺根目錄中依次點開Microsoft SQL Server-->SQL Server組-->雙擊打開你的服務器 2、然后點上面菜單中的工具-->選擇數據庫維護計劃器 3、下一步選擇要進行自動備份的數據-->下一步更新數據優化信息,這里一般不用做選擇-->下一步檢查數據完整性,也一般不選擇 4、下一步指定數據庫維護計劃,默認的是1周備份一次,點擊更改選擇每天備份后點確定 5、下一步指定備份的磁盤目錄,選擇指定目錄,如您可以在D盤新建一個目錄如:d:\databak,然后在這里選擇使用此目錄,如果您的數據庫比較多最好選擇為每個數據庫建立子目錄,然后選擇刪除早于多少天前的備份,一般設定4-7天,這看您的具體備份要求,備份文件擴展名默認的是BAK 6、下一步指定事務日志備份計劃,看您的需要做選擇-->下一步要生成的報表,一般不做選擇-->下一步維護計劃歷史記錄,最好用默認的選項-->下一步完成 7、完成后系統很可能會提示Sql Server Agent服務未啟動,先點確定完成計劃設定,然后找到桌面最右邊狀態欄中的SQL綠色圖標,雙擊點開,在服務中選擇Sql Server Agent,然后點擊運行箭頭,選上下方的當啟動OS時自動啟動服務 8、可以設置啟動啟動sql server Agent:運行Services.msc,設置sqlserverAgent為自動啟動。 修改備份計劃: 打開企業管理器,在控制臺根目錄中依次點開Microsoft SQL Server-->SQL Server組-->雙擊打開你的服務器-->管理-->數據庫維護計劃 二、異地備份 運行環境分析: 現有兩臺機器具體配置如下: 操作系統:兩臺都是Windows 2000 Advanced Server 數據庫: Sql Server 2000 IP: 一臺是192.168.0.1,另一臺是192.168.0.100 要求:定期自動實現將192.168.0.1中數據庫中bbsbak數據庫備份到192.168.0.100的機器上,并刪除15天以前對192.168.0.100中自動備份的bbsbak數據庫。 注:本操作涉及到Ms Sql Server2000數據庫數據轉換服務中包的高級設置、數據庫存儲過程、作業的添加及簡單Transact_SQL語句的操作等內容,在此不再詳述,請參考相關資料及微軟官方網站。 操作步驟: 1. 在本機(win2000)中打開SQL數據庫――-數據轉換服務――本地包(如圖) screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/00001_Y7l2vTPXYJIN.jpg');}"> 2. 右鍵――新建包,出現如圖畫面 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/00002_CLxGkSexphxp.jpg');}" resized="true"> A:首先建立Microsoft OLE DB Provider for SQL Server(如圖) screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/00003_pKIEkQGWar4l.jpg');}" resized="true"> 在此注意兩點: 第一指定的服務器應是192.168.0.100; 第二192.168.0.100數據庫的選擇(在此我用master數據庫)。 B:下面建立執行 SQL 任務: 未定義如圖 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/00004_ohD3JHlS8hWw.jpg');}" resized="true"> a.命令超時項設置為:300; b.SQL語句為: select 'bbsbak'+convert(varchar(4), datepart(yyyy, getdate())) + convert(varchar(4), datepart(mm, getdate())) + convert(varchar(4), datepart(dd, getdate())) 注釋:紅色標記是實現備份后的數據庫在bbsbak后加上年月日,如bbsbak20031023. c.點擊參數(A)對參數進行相關設置,出現如上圖界面 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/00005_XmKg6kcX991t.jpg');}" resized="true"> 選輸出參數,如上圖 輸出參數類型為行值,點擊創建全局變量,出現如圖界面 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/00006_xTCkaClz5F5o.jpg');}" resized="true"> 全局變量的名稱為:bbsbak_crt,確定后返回參數映射界面 選擇輸出全局變量為: bbsbak_crt OK,第一個SQL任務建立成功! C:下面建立另外一個執行 SQL 任務: 未定義 如圖 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/00007_OUOn5MK1f0My.jpg');}" resized="true"> 其中SQL語句為:exec crtdatabase_bbsbak. OK,繼續! D:建立復制 SQL Server 對象任務: 未定義,如圖 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/00008_fUuVEKyMg7cD.jpg');}" resized="true"> 注意:此時源服務器為:192.168.0.1,選擇要備份的數據庫(bbsbak) 下面轉到目的服務中:參數如圖設置 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/00009_xQKiPGIxhnHi.jpg');}" resized="true"> OK!繼續 E:建立動態屬性任務: 未定義,如圖 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/000010_X5yM8Vr9TMzi.jpg');}" resized="true"> OK! F:下面設置工作流狀態如圖 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/000011_RuUCj5uHVHKg.jpg');}" resized="true"> 保存為bbsbak_DTS,如圖 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/000012_liyvn4GnJwHz.jpg');}" resized="true"> 下面調度包 調度前保證SQL agent server啟動 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/000013_JzycmRVCbgEO.jpg');}" resized="true"> 到此本機中(192.168.0.1)上的操作完成。 3. 打開192.168.0.100機器中的sql數據庫――-Master數據庫――存儲過程,如圖 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/000014_sajkx9uu8GO1.jpg');}" resized="true"> 存儲過程如下: screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/000015_3QFuNclMZMQl.jpg');}" resized="true"> 文本語法為: CREATE proc crtdatabase_bbsbak as declare @sql varchar(120) declare @sql2 varchar(120) declare @sql3 varchar(260) declare @nalja varchar(12) set @nalja=convert(varchar(4), datepart(yyyy, getdate())) + convert(varchar(4), datepart(mm, getdate())) + convert(varchar(4), datepart(dd, getdate())) set @sql = 'create database bbsbak'+@nalja+' on ( name='+'''backup_mdf'+@nalja+''', filename= ''E:\ bbsbak\backup_mdf\bbsbak'+@nalja+'.mdf'')' set @sql2=' Log on ( name='+'backup_ldf'+@nalja+' ,filename= ''E:\ bbsbak \backup_ldf\ bbsbak '+@nalja+'.ldf'')' set @sql3=@sql+@sql2 --select @sql3 exec (@sql3) GO 注意:E:\DB_backup\Full_backup\此路徑中的DB_backup和Full_backup文件夾應當事先在本機E盤上建立好 同樣再建立一個存儲過程,語法為 CREATE proc deldatabase_bbsbak as declare @nalja varchar(12) declare @sql varchar(120) set @nalja=convert(varchar(4), datepart(yyyy, getdate()-15))+convert(varchar(4), datepart(mm,getdate()-15)) +convert(varchar(4), datepart(dd, getdate()-15)) set @sql='drop database nage'+@nalja exec (@sql) GO 最后再agent server 中建立一個作業調度存儲過程,其中作業中的步驟命令為:exec deldatabase_bbsbak 注意調度時的日期應當推遲15天 OK了!!! 三、本地備份 若是在本機(192.168.0.1)中實現自動備份? 操作如下:sql agent中直接添加作業bbsbak_full_backup 如圖 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/000016_WfVh20VMAbm3.jpg');}" resized="true"> 其中:作業中的步驟命令為: BACKUP DATABASE bbsbak TO DISK = 'F:\DB_backup\Full_backup\bbsbak.bak' WITH INIT, NOUNLOAD, NAME=N'bbsbak Full backup', SKIP, STATS = 10, NOFORMAT 注意:F:\DB_backup\Full_backup\此路徑中的DB_backup和Full_backup文件夾應當事先在本機上建立好 日志文件的步驟同樣添加作業:bbsbak_log_backup screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='點擊在新窗口查看全圖\nCTRL+鼠標滾輪放大或縮小';}" border=0 onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return false;} else {window.open('attachments/month_0606/000017_52WAGCHf5FUb.jpg');}" resized="true"> 其中:作業中的步驟命令為: BACKUP LOG [bbsbak] TO DISK = N'F:\DB_backup\Log_backup\bbsbak_log.bak' WITH INIT , NOUNLOAD , NAME = N'bbsbak log backup', NOSKIP , STATS = 10, NOFORMAT 注意:F:\DB_backup\Log_backup \此路徑中的DB_backup和Log_backup文件夾應當事先在本機上建立好 好,到此所有的操作已完成,望各位繼續討論。 數據庫自動備份簡易貼(方法二) ================== 一 配置發布服務器 在發布服務器上執行以下步驟: (1) 從[工具]下拉菜單的[復制]子菜單中選擇[配置發布、訂閱服務器和分發]出現配置發布和分發向導 (2) [下一步] 選擇分發服務器 可以選擇把發布服務器自己作為分發服務器或者其他sql的服務器 (3) [下一步] 設置快照文件夾 一般采用默認\\servername\d$\Program Files\Microsoft SQL Server\MSSQL\ReplData **(4) [下一步] 自定義配置 可以選擇: 是,讓我設置分發數據庫屬性啟用發布服務器或設置發布設置 否,使用下列默認設置 建議采用自定義設置 (5) [下一步] 設置分發數據庫名稱和位置 采用默認值 (6) [下一步] 啟用發布服務器 選擇作為發布的服務器 (7) [下一步] 選擇需要發布的數據庫和發布類型 (8) [下一步] 選擇注冊訂閱服務器 (9) [下一步] 完成配置 二 創建出版物 發布服務器上 (1)從[工具]菜單的[復制]子菜單中選擇[創建和管理發布]命令 (2)選擇要創建出版物的數據庫,然后單擊[創建發布] (3)在[創建發布向導]的提示對話框中單擊[下一步]系統就會彈出一個對話框。 對話框上的內容是復制的三個類型。我們現在選第一個也就是默認的快照發布(其他兩個大家可以去看看幫助) (4)單擊[下一步]系統要求指定可以訂閱該發布的數據庫服務器類型, SQLSERVER允許在不同的數據庫如 ORACLE或ACCESS之間進行數據復制。 但是在這里我們選擇運行"SQL SERVER 2000"的數據庫服務器 (5)單擊[下一步]系統就彈出一個定義文章的對話框也就是選擇要出版的表 注意: 如果前面選擇了事務發布 則再這一步中只能選擇帶有主鍵的表 (6)選擇發布名稱和描述 **(7)自定義發布屬性 向導提供的選擇: 是 我將自定義數據篩選,啟用匿名訂閱和或其他自定義屬性 否 根據指定方式創建發布 建議采用自定義的方式 (8)[下一步] 選擇篩選發布的方式 (9)[下一步] 可以選擇是否允許匿名訂閱 1)如果選擇署名訂閱,則需要在發布服務器上添加訂閱服務器 方法: [工具]->[復制]->[配置發布、訂閱服務器和分發的屬性]->[訂閱服務器] 中添加 否則在訂閱服務器上請求訂閱時會出現的提示:改發布不允許匿名訂閱 如果仍然需要匿名訂閱則用以下解決辦法 [企業管理器]->[復制]->[發布內容]->[屬性]->[訂閱選項] 選擇允許匿名請求訂閱 2)如果選擇匿名訂閱,則配置訂閱服務器時不會出現以上提示 (10)[下一步] 設置快照 代理程序調度 (11)[下一步] 完成配置 當完成出版物的創建后創建出版物的數據庫也就變成了一個共享數據庫。 三 訂閱服務器的配置 (一) 強制訂閱的配置 在發布服務器上 [企業管理器]->[復制]->[發布內容]->[屬性]->[訂閱]->[強制新建] 然后出現強制訂閱向導 選擇訂閱服務器->訂閱數據庫名->設置分發代理程序調度->初始化訂閱->啟動要求的服務 (發布服務器的agent要啟動)->完成即可 (二) 請求訂閱的配置 訂閱服務器上執行以下操作 (1) 從[工具]下拉菜單中選擇[復制]子菜單的[請求訂閱] (2) 選擇[請求新訂閱] 打開請求訂閱向導 (3) [下一步]選擇已注冊的發布 (4) [下一步]選擇創建訂閱的數據庫 (5) [下一步]選擇匿名訂閱或署名訂閱 (6) [下一步] 初始化訂閱 選擇初始化架構和數據 (7) [下一步]選擇快照文件的存放位置 一般采用發布服務器的默認快照文件夾 **(8) [下一步]設置分發代理程序調度 可以選擇訂閱更新內容的間隔 (9) [下一步]系統會提示檢查發布服務器的代理服務的運行狀態 (10) [下一步] 完成配置 理論備注: =============== 利用數據庫復制技術 實現數據同步更新 復制的概念 復制是將一組數據從一個數據源拷貝到多個數據源的技術,是將一份數據發布到多個存儲站點上的有效方式。使用復制技術,用戶可以將一份 數據發布到多臺服務器上,從而使不同的服務器用戶都可以在權限的許可的范圍內共享這份數據。復制技術可以確保分布在不同地點的數據自 動同步更新,從而保證數據的一致性。 SQL復制的基本元素包括 出版服務器、訂閱服務器、分發服務器、出版物、文章 SQL復制的工作原理 SQL SERVER 主要采用出版物、訂閱的方式來處理復制。源數據所在的服務器是出版服務器,負責發表數據。出版服務器把要發表的數據的所有 改變情況的拷貝復制到分發服務器,分發服務器包含有一個分發數據庫,可接收數據的所有改變,并保存這些改變,再把這些改變分發給訂閱 服務器 SQL SERVER復制技術類型 SQL SERVER提供了三種復制技術,分別是: 1、快照復制(呆會我們就使用這個) 2、事務復制 3、合并復制 只要把上面這些概念弄清楚了那么對復制也就有了一定的理解。接下來我們就一步一步來實現復制的步驟。 第一先來配置出版服務器 (1)選中指定[服務器]節點 (2)從[工具]下拉菜單的[復制]子菜單中選擇[發布、訂閱服務器和分發]命令 (3)系統彈出一個對話框點[下一步]然后看著提示一直操作到完成。 (4)當完成了出版服務器的設置以后系統會為該服務器的樹形結構中添加一個復制監視器。同時也生成一個分發數據庫(distribution) 第二創建出版物 (1)選中指定的服務器 (2)從[工具]菜單的[復制]子菜單中選擇[創建和管理發布]命令。此時系統會彈出一個對話框 (3)選擇要創建出版物的數據庫,然后單擊[創建發布] (4)在[創建發布向導]的提示對話框中單擊[下一步]系統就會彈出一個對話框。對話框上的內容是復制的三個類型。我們現在選第一個也就是默 認的快照發布(其他兩個大家可以去看看幫助) (5)單擊[下一步]系統要求指定可以訂閱該發布的數據庫服務器類型,SQLSERVER允許在不同的數據庫如 ORACLE或ACCESS之間進行數據復制。但 是在這里我們選擇運行"SQL SERVER 2000"的數據庫服務器 (6)單擊[下一步]系統就彈出一個定義文章的對話框也就是選擇要出版的表 (7)然后[下一步]直到操作完成。當完成出版物的創建后創建出版物的數據庫也就變成了一個共享數據庫。 第三設計訂閱 (1)選中指定的訂閱服務器 (2)從[工具]下拉菜單中選擇[復制]子菜單的[請求訂閱] (3)按照單擊[下一步]操作直到系統會提示檢查SQL SERVER代理服務的運行狀態,執行復制操作的前提條件是SQL SERVER代理服務必須已經啟動 。 (4)單擊[完成]。完成訂閱操作。 完成上面的步驟其實復制也就是成功了。但是如何來知道復制是否成功了呢?這里可以通過這種方法來快速看是否成功。展開出版服務器下面 的復制——發布內容——右鍵發布內容——屬性——擊活——狀態然后點立即運行代理程序接著點代理程序屬性擊活調度把調度設置為每一天 發生,每一分鐘,在0:00:00和23:59:59之間。接下來就是判斷復制是否成功了打開d:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc\XIAOWANGZI_database_database下面看是不是有一些以時間做為文件名的文件夾差不多一分中就產生一個。
該文章在 2011/3/17 15:40:04 編輯過 |
關鍵字查詢
相關文章
正在查詢... |