資源描述:
《sql server 2005 數據庫最快遷移方案》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。
1、一、目的在做SQLServer數據庫維護的時候,當上司要求我們把幾十G的數據文件搬動到其它服務器,并且要求最小宕機時間的時候,我們有沒什么方案可以做到這些要求呢?在這里我們假設這兩臺機器并不是在一個機房上,這樣看起來我們的解決方案才更有意義,如果你那么好運這兩臺機器在同一個局域網,那么恭喜你,你可以多很多的方案可以做到。?二、分析與設計思路其實我們假設的環(huán)境有兩個特點:第一個是數據庫文件比較大;第二個就是我們的傳送文件的速度可能會比較慢。也許這傳送速度我們是沒有辦法了,但是我們可以就從文件的大小這個問題出發(fā),結合SQLServer的特性,這樣就有了下面的解決方案了。為了
2、使宕機時間最短,我們這里使用了完整備份和差異備份來遷移數據庫,在白天的時候對需要遷移的數據庫進行一次完整備份(XXX_full.bak),并把備份文件拷貝(這里可以使用FTP軟件進行斷點續(xù)傳)到目標服務器進行還原,等到下班時間之后再進行一次差異備份(XXX_diff.bak),再把這個差異備份拷貝到目標服務器,在完整還原的基礎上再進行差異還原。這里的宕機時間=差異備份時間+傳送差異備份文件時間+還原差異備份文件時間,這宕機時間是不是讓你感覺這時間很短呢??三、參考腳本注意修改下面腳本中數據庫的名稱,還有絕對路徑。--1:完整備份declare@dbnamevarchar
3、(100)declare@sqlnvarchar(max)set@dbname='DataBaseName'set@sql='--'+@dbname+'_fullBACKUPDATABASE['+@dbname+']TO?DISK=''D:DBBackup'+@dbname+'_full.bak''WITHNOFORMAT,NOINIT,?NAME='''+@dbname+'-完整數據庫備份'',SKIP,NOREWIND,NOUNLOAD,?STATS=10GO'print@sql?--生成的SQL--DataBaseName_fullBACKUPDATABASE
4、[DataBaseName]TO?DISK='D:DBBackupDataBaseName_full.bak'WITHNOFORMAT,NOINIT,?NAME='DataBaseName-完整數據庫備份',SKIP,NOREWIND,NOUNLOAD,?STATS=10GO?--2:完整備份還原declare@dbnamevarchar(100)declare@sqlnvarchar(max)set@dbname='DataBaseName'set@sql='--RESTORE'+@dbname+'_fullRESTOREDATABASE['+@dbname+']
5、FROM?DISK=''D:DBBackup'+@dbname+'_full.bak''?WITH?FILE=1,?MOVEN''DataBase_Name''TON''D:DataBase'+@dbname+'.mdf'',?MOVEN''DataBase_Name_log''TON''D:DataBase'+@dbname+'_log.ldf'',?NORECOVERY,?NOUNLOAD,?REPLACE,?STATS=10GO'print@sql?--生成的SQL--RESTOREDataBaseName_fullRESTOREDATABASE[Da
6、taBaseName]FROM?DISK='D:DBBackupDataBaseName_full.bak'?WITH?FILE=1,?MOVEN'DataBase_Name'TON'D:DataBaseDataBaseName.mdf',?MOVEN'DataBase_Name_log'TON'D:DataBaseDataBaseName_log.ldf',?NORECOVERY,?NOUNLOAD,?REPLACE,?STATS=10GO?--3:差異備份declare@dbnamevarchar(100)declare@sqlnvarchar(max)
7、set@dbname='DataBaseName'set@sql='--'+@dbname+'_diffBACKUPDATABASE['+@dbname+']TO?DISK=N''D:DBBackup'+@dbname+'_diff.bak''WITH?DIFFERENTIAL,NOFORMAT,NOINIT,?NAME=N'''+@dbname+'-差異數據庫備份'',SKIP,NOREWIND,NOUNLOAD,?STATS=10GO'print@sql?--生成的SQL--DataBaseName_diffBACKUPDATAB