做網(wǎng)站,數(shù)據(jù)庫同步是最重要的了吧,其他需要使用需要使用SQL Server數(shù)據(jù)庫的CS系統(tǒng),SQL數(shù)據(jù)庫的備份也是非常重要的,數(shù)據(jù)庫備份是維護數(shù)據(jù)正確,防止數(shù)據(jù)丟失的重要手段。備份點恢復策略可以讓數(shù)據(jù)還原到備份點,通過觸發(fā)備份的方法,可以提高備份的有效性;采用即時點備份策略,可將數(shù)據(jù)恢復到任意點,提高數(shù)據(jù)的安全性;通過性能警報監(jiān)視事務日志使用情況,及時優(yōu)化日志文件,可以提高系統(tǒng)性能。
一、備份數(shù)據(jù)庫步驟
1、第一步:在開始—>程序(P)—>MicrosoftSQLserver2005—>SQLServerManagementStudio(如下圖)
2、第二步:登錄數(shù)據(jù)庫服務器,在打開企業(yè)管理器后,逐一展開,找到并展開“數(shù)據(jù)庫”這一項,然后會看到需要備份的數(shù)據(jù)庫“gxbtoc”(如下圖)
3、第三步:選擇要備份的數(shù)據(jù)庫單擊右鍵(如下圖)
4、第四步:點擊上圖的“備份”,進入下圖(一般情況用默認設置就可以了)(如下圖)
5、第五步:單擊上圖的“添加”,進入“選擇備份目標”對話框(如下圖)
6、第六步:點擊上圖“選擇備份目標”右邊的三點框打開備份文件的路徑,見下圖,在“定位數(shù)據(jù)庫文件”窗口指定目錄并填寫備份的文件名,然后點確定,返回“備份目錄”窗口。
7、第七步:點擊確實返回“備份目錄”后再點擊“確定”后,即開始備份(如下圖)
8、第八步:打開步驟五中確定的那個盤符就可以看到備份的數(shù)據(jù)庫(如下圖)
二、還原數(shù)據(jù)庫步驟
1、第一步:在開始—>程序集(P)—>MicrosoftSQLserver2005—>SQLServerManagementStudio(如下圖)
2、第二步:登錄需要備份的數(shù)據(jù)庫服務器,打開企業(yè)管理器后,逐一展開,看到有數(shù)據(jù)庫項后,選中數(shù)據(jù)庫節(jié)點單擊右鍵(如下圖)
3、第三步:選擇“還原”后進入“還原數(shù)據(jù)庫”窗口,目標數(shù)據(jù)庫默認已經(jīng)選擇需要還原的數(shù)據(jù),接著在“還原的源”中的選擇“源設備(D)”,單擊“源設備((D)”右邊的“…”按鈕.見下圖
4、進入“指定備份對話框”,點擊“添加”,進入指定數(shù)據(jù)庫文件窗口。
5、第四步:瀏覽并找到需要還原的數(shù)據(jù)庫備份文件,點擊“確定”
6、第六步:點擊“確定”后回到指“定備份”對話框,此時需要還原的文件已經(jīng)列出來了,接著點擊“確定”,返回“還原數(shù)據(jù)庫”。
注:有些備份文件有多個備份集,可根據(jù)實際情況選擇備份集還原數(shù)據(jù)庫。
8、在左邊的功能導航框中選擇“選項”并選擇“在現(xiàn)有數(shù)據(jù)庫上強制還原(F)”點擊“確定”。
9、系統(tǒng)自動還原數(shù)據(jù)庫,成功后系統(tǒng)提示還原數(shù)據(jù)庫成功,點擊確定或OK即可。
三、數(shù)據(jù)庫數(shù)據(jù)恢復步驟
1、通過日志恢復SQLSERVER2005數(shù)據(jù)(也可通過LogExplorer工具查找進行恢復數(shù)據(jù))
(A)......通過日志和時間點來恢復數(shù)據(jù)的前提條件:數(shù)據(jù)庫的故障恢復改為非簡單模式,去掉自動關閉和自動收縮兩個選項,如果是簡單模式:類似下面的語句操作數(shù)據(jù)就不會記錄到日志中:select*intotfrom[表名].【采用LogExplorer工具可以在線操作,通過恢復日志(指定時間點恢復)來恢復數(shù)據(jù),必須停止數(shù)據(jù)庫或者再另一個數(shù)據(jù)庫恢復(前提是必須有一個完全備份和日志備份)】
這時為保證數(shù)據(jù)的完整要將數(shù)據(jù)庫的恢復模式改成“完整.
1.1、這時對數(shù)據(jù)庫事務日志做備份(注意,如果沒做個數(shù)據(jù)庫完整備份,是不能做事務日志備份的)
這時新建一個數(shù)據(jù)庫zp(將以前的數(shù)據(jù)庫改名),恢復數(shù)據(jù)庫
這時我們看到,有兩個還原的數(shù)據(jù)庫備份,因為我對zp數(shù)據(jù)庫備份了兩次,兩次的備份的數(shù)據(jù)文件都一樣。這里我們選擇最近時間的備份默認在數(shù)據(jù)庫的設置如下:是追加到備份集里,所以會有兩個備份,如下圖:
同時,在”選項“里設置”不回滾“事務,
注意:通過事務日志還原數(shù)據(jù)庫,必須選擇"不回滾"事務
確定后:出現(xiàn)下面情況:
這時發(fā)現(xiàn),數(shù)據(jù)庫一直是”正在還原“,這時還原數(shù)據(jù)庫事務日志,
1.2、“常規(guī)”里選擇時間,(剛刪除的時間)
1.3、“選項”里將恢復狀態(tài)設置為”回滾未提交“事務
確定后,查詢數(shù)據(jù)庫,發(fā)現(xiàn)數(shù)據(jù)回來了.
2、無日志的數(shù)據(jù)恢復
2.1.新建一個同名的數(shù)據(jù)庫
2.2再停掉sqlserver(注意不要分離數(shù)據(jù)庫)
2.3用原數(shù)據(jù)庫的數(shù)據(jù)文件覆蓋掉這個新建的數(shù)據(jù)庫
2.4再重啟sqlserver
2.5此時打開企業(yè)管理器時會出現(xiàn)置疑,先不管,執(zhí)行下面的語句(注意修改其中的數(shù)據(jù)庫名)
2.6完成后一般就可以訪問數(shù)據(jù)庫中的數(shù)據(jù)了,這時,數(shù)據(jù)庫本身一般還要問題,解決辦法是,利用
數(shù)據(jù)庫的腳本創(chuàng)建一個新的數(shù)據(jù)庫,并將數(shù)據(jù)導進去就行了.
USEMASTER
SP_CONFIGURE'ALLOWUPDATES',1RECONFIGUREWITHOVERRIDE
UPDATESYSDATABASESSETSTATUS=32768WHERENAME='數(shù)據(jù)庫名'
sp_dboption'數(shù)據(jù)庫名','singleuser','true'
DBCCCHECKDB('數(shù)據(jù)庫名')
updatesysdatabasessetstatus=28wherename='數(shù)據(jù)庫名'
sp_configure'allowupdates',0reconfigurewithoverride
sp_dboption'數(shù)據(jù)庫名','singleuser','false'
四、數(shù)據(jù)庫壓縮
1、執(zhí)行M_CompressDataBase_T存儲過程對非活動的服務器的所有數(shù)據(jù)庫進行壓縮.
五、常見異常處理
1、磁盤空間不夠
解決方法:擴充磁盤空間或選擇空間足夠的磁盤
2、如果還原后,遇到SQL問題:錯誤21002:[sql-dmo]用戶“***”已經(jīng)存在錯誤。
解決方法:1.打開SQLSERVER2005Management→數(shù)據(jù)庫→展開出問題的數(shù)據(jù)庫如"mydb"→"用戶"→在右側窗口中選擇出問題的用戶名如:"***"→右擊鼠標→刪除
3、在還原數(shù)據(jù)庫時遇到"在數(shù)據(jù)還原時候出現(xiàn)"試圖擴大物理文件時,MODIFYFILE遇到操作系統(tǒng)錯誤112(磁盤空間不足)。未能調整文件xxx_log'的空間分配。RESTOREDATABASE操作異常終止."的問題.
解決方法:運行cmd輸入:convert盤符:/FS:NTFS如:convertC:/FS:NTFS
4、無法將設備'xxx'上的備份應用于數(shù)據(jù)庫'yyy',restoredatabase操作異常終止.
解決方法:更改還原數(shù)據(jù)庫名
5、問題5:恢復過程中出現(xiàn)“因為數(shù)據(jù)庫正在使用,所以未能獲得對數(shù)據(jù)庫的排它訪問權。”
解決方法:出現(xiàn)這種問題主要是由于數(shù)據(jù)庫的會話還沒有中斷,可以采用kill會話進程或重啟服務器
6、為備份或還原操作指定的設備太多;只允許指定64個設備。RESTOREHEADERONLY操作異常終止。(MicrosoftSQLServer,Error:3205)
解決方法:如果系統(tǒng)同時安裝了sqlserver2000跟sqlserver2005,在還原時可能會出現(xiàn)上述錯誤,解決方法---于數(shù)據(jù)庫屬性-選項-兼容級別->sqlsever2000(80),或在安裝時為sqlserver2000跟sqlserver2005一個或兩個都指定實例名.
7、問題3:無法更改數(shù)據(jù)庫中對象的所有者:
解決方法:使用如下代碼:
execsp_changeobjectowner'原所有者名',[dbo]
執(zhí)行存儲過程changename
execchangename'原所有者名','新所有者名'
8、問題7:如何將SQLSERVER數(shù)據(jù)庫備份到網(wǎng)絡上
解決方法:
[@physicalname=]'physical_name'
備份設備的物理名稱。物理名稱必須遵照操作系統(tǒng)文件名稱的規(guī)則或者網(wǎng)絡設備的通用命名規(guī)則,并且必須包括完整的路徑。physical_name的數(shù)據(jù)類型為nvarchar(260),沒有默認值,并且不能為NULL。
當創(chuàng)建遠程網(wǎng)絡位置上的備份設備時,請確保在其下啟動SQLServer的名稱對遠程的計算機有適當?shù)膶懭肽芰Α?/p>
B.添加網(wǎng)絡磁盤備份設備
下面的示例顯示一個遠程磁盤備份設備。在其下啟動SQLServer的名稱必須對該遠程文件擁有權限。
USEmasterEXECsp_addumpdevice'disk','networkdevice','\\servername\sharename\path\filename.ext'"
以前曾看到過有人問,怎么樣才能將數(shù)據(jù)備份到網(wǎng)絡上,一直沒有答案,然后我就試驗了一把.
在服務器上建了一個目錄,然后確保共享并有權限,如果需要建在共享目錄下的目錄下,那還得保證用戶有權限
當然,SQLSERVER系統(tǒng)啟動早于登錄,一般用戶會在登錄中使用本地系統(tǒng)賬戶,我想在登錄到系統(tǒng)之前一直是administrator用戶模擬,因此,我將登錄的賬戶改為了網(wǎng)絡用戶,因為我公司有域,因此我將域用戶設置為本機的系統(tǒng)管理員,以確保該服務能啟動.
接下來更簡單了:
sp_addumpdevice'DISK','NetWork','\\server\d$\databak\xuzh.bak'gobackupdatabasexuzhtonetwork
得到的結果如下:
成功完成網(wǎng)絡備份
六、總結
1、這是一般大型網(wǎng)站數(shù)據(jù)安全的一個辦法,因為數(shù)據(jù)庫比較大(可能有幾百G)數(shù)據(jù),做一次完整備份時間很長,而且影響數(shù)據(jù)庫服務器的性能,為保證數(shù)據(jù)安全,大多采用完整備份+事務日志備份來保證數(shù)據(jù)安全。例如:一天做一次或者2天做一次完整備份,幾個小時內做一次日志備份。(當然可以用寫一個job來實現(xiàn))
2、如SQLserver2005里的鏡像就是采用的這種事務日志同步的方法保證數(shù)據(jù)的同步。
3、如果恢復的日志數(shù)據(jù)出現(xiàn)”LSN“太早和太晚說明了事務日志間的不連續(xù)。這時要注意備份的時間和順序。
七、附錄:
I.數(shù)據(jù)庫的文件和備份的文件是兩個不同的慨念.
每個數(shù)據(jù)庫都至少由兩個文件組成:
一個數(shù)據(jù)文件,默認擴展名的.mdf
一個日志文件,默認擴展名為.ldf
如果是用直接備份這兩個數(shù)據(jù)文件來實現(xiàn)數(shù)據(jù)庫備份,則備份的文件就是兩個.
如果通過SQL的backupdatabase來備份,則SQL把這兩個文件打包在一齊,所以只有一個文件.
II.sqlserver提供了三種恢復模式,他們決定了有多少和什么樣的數(shù)據(jù)可以被備份下來.
1.簡單恢復模式
主要應用于小型數(shù)據(jù)庫和不經(jīng)常改變的數(shù)據(jù)
2.完整恢復模式
可以在最大范圍內防止出現(xiàn)故障時丟失數(shù)據(jù),它包括數(shù)據(jù)庫備份和食物日志備份,并提供全面保護.這個模式使用數(shù)據(jù)庫和所有日志的備份恢復數(shù)據(jù)庫
3.大容量日志恢復模式
在完整恢復模式下,所有大批量的數(shù)據(jù)導入導出操作產(chǎn)生的日志更加的少,他會進行日志的最小化記錄,部分事務不會被記錄下來.
III. 數(shù)據(jù)庫備份可以分為4個備份類型。
1、完全備份:創(chuàng)建備份完成時數(shù)據(jù)庫內存在的數(shù)據(jù)的副本。
2、差異備份:只記錄自上次數(shù)據(jù)庫備份后發(fā)生更改的數(shù)據(jù)。差異數(shù)據(jù)庫備份比數(shù)據(jù)庫備份小,而且備份速度快,因此可以更經(jīng)常地備份,經(jīng)常備份將減少丟失數(shù)據(jù)的危險。
3、日志備份:是自上次備份事務日志后對數(shù)據(jù)庫執(zhí)行的所有事務的一系列記錄?梢允褂檬聞杖罩緜浞輰(shù)據(jù)庫恢復到特定的即時點(如輸入多余數(shù)據(jù)前的那一點)或恢復到故障點。
4、文件組備份:可以備份和還原數(shù)據(jù)庫中的個別文件?梢灾贿原已損壞的文件,而不用還原數(shù)據(jù)庫的其余部分,從而加快了恢復速度。
不同的備份類型適用的范圍也不同。全備份,可以只用一步操作完成數(shù)據(jù)的全部備份,但執(zhí)行時間比較長。差異備份和日志備份,都不能獨立作為一個備份集來使用,需要進行一次全備份。文件備份必須與事務日志備份一起使用,所以文件備份只適用于完全恢復模型和大容量日志記錄恢復模型。
每一種備份類型都有不足之處,要針對需要選擇備份類型,或者使用幾種備份方式的配合來完成數(shù)據(jù)庫的備份。
經(jīng)常使用備份方式組合有以下幾種:
1、全備份+差異備份:以一周為周期,星期日進行全備份,星期一到星期六每天進行差異備份。
2、全備份+日志備份:以一周為周期,星期日進行全備份,星期一到星期六每天進行日志備份。
3、文件組備份+日志備份:備份周期取決于數(shù)據(jù)庫的大小和能力,每周期分別進行一部分數(shù)據(jù)文件備份,每天進行日志備份。