資源描述:
《sql server 2005 數(shù)據(jù)庫最快遷移方案》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、一、目的在做SQLServer數(shù)據(jù)庫維護(hù)的時(shí)候,當(dāng)上司要求我們把幾十G的數(shù)據(jù)文件搬動(dòng)到其它服務(wù)器,并且要求最小宕機(jī)時(shí)間的時(shí)候,我們有沒什么方案可以做到這些要求呢?在這里我們假設(shè)這兩臺(tái)機(jī)器并不是在一個(gè)機(jī)房上,這樣看起來我們的解決方案才更有意義,如果你那么好運(yùn)這兩臺(tái)機(jī)器在同一個(gè)局域網(wǎng),那么恭喜你,你可以多很多的方案可以做到。?二、分析與設(shè)計(jì)思路其實(shí)我們假設(shè)的環(huán)境有兩個(gè)特點(diǎn):第一個(gè)是數(shù)據(jù)庫文件比較大;第二個(gè)就是我們的傳送文件的速度可能會(huì)比較慢。也許這傳送速度我們是沒有辦法了,但是我們可以就從文件的大小這個(gè)問題出發(fā),結(jié)合SQLServer的特性,這樣就有了下面的解決方案了。為了
2、使宕機(jī)時(shí)間最短,我們這里使用了完整備份和差異備份來遷移數(shù)據(jù)庫,在白天的時(shí)候?qū)π枰w移的數(shù)據(jù)庫進(jìn)行一次完整備份(XXX_full.bak),并把備份文件拷貝(這里可以使用FTP軟件進(jìn)行斷點(diǎn)續(xù)傳)到目標(biāo)服務(wù)器進(jìn)行還原,等到下班時(shí)間之后再進(jìn)行一次差異備份(XXX_diff.bak),再把這個(gè)差異備份拷貝到目標(biāo)服務(wù)器,在完整還原的基礎(chǔ)上再進(jìn)行差異還原。這里的宕機(jī)時(shí)間=差異備份時(shí)間+傳送差異備份文件時(shí)間+還原差異備份文件時(shí)間,這宕機(jī)時(shí)間是不是讓你感覺這時(shí)間很短呢??三、參考腳本注意修改下面腳本中數(shù)據(jù)庫的名稱,還有絕對路徑。--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+'-完整數(shù)據(jù)庫備份'',SKIP,NOREWIND,NOUNLOAD,?STATS=10GO'print@sql?--生成的SQL--DataBaseName_fullBACKUPDATABASE
4、[DataBaseName]TO?DISK='D:DBBackupDataBaseName_full.bak'WITHNOFORMAT,NOINIT,?NAME='DataBaseName-完整數(shù)據(jù)庫備份',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+'-差異數(shù)據(jù)庫備份'',SKIP,NOREWIND,NOUNLOAD,?STATS=10GO'print@sql?--生成的SQL--DataBaseName_diffBACKUPDATAB