一、簡單實用的備份方法:
企業管理器中的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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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);" οnmοuseοver="if(this.resized) this.style.cursor='hand';" οnclick="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) [下一步] 完成配置
一笑 發表於2004-07-22 3:16 AM
理論備註:
===============
利用數據庫複製技術 實現數據同步更新
複製的概念
複製是將一組數據從一個數據源拷貝到多個數據源的技術,是將一份數據發佈到多個存儲站點上的有效方式。使用複製技術,用戶可以將一份
數據發佈到多臺服務器上,從而使不同的服務器用戶都可以在權限的許可的範圍內共享這份數據。複製技術可以確保分佈在不同地點的數據自
動同步更新,從而保證數據的一致性。
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下面看是不是有一些以時間做爲文件名的文件夾差不多一分中就產生一個。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/yxl2005play/archive/2009/04/16/4083468.aspx