SQL2005數(shù)據(jù)庫(kù)附加、分離、查詢、備份、還原、刪除小程序._第1頁(yè)
SQL2005數(shù)據(jù)庫(kù)附加、分離、查詢、備份、還原、刪除小程序._第2頁(yè)
SQL2005數(shù)據(jù)庫(kù)附加、分離、查詢、備份、還原、刪除小程序._第3頁(yè)
SQL2005數(shù)據(jù)庫(kù)附加、分離、查詢、備份、還原、刪除小程序._第4頁(yè)
SQL2005數(shù)據(jù)庫(kù)附加、分離、查詢、備份、還原、刪除小程序._第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Title SQL2005數(shù)據(jù)庫(kù)附加、分離、查詢、備份、還原、刪除 小程 序:dosmenu : AAA代表在SQL中看到的要分離、附加的數(shù)據(jù)庫(kù)名: BBB代 表要附加的數(shù)據(jù)庫(kù)的位置CCC代表要附加的數(shù)據(jù)庫(kù)文件名DDD代表要附加 的數(shù)據(jù)庫(kù)日志文件名: EEE代表指定的數(shù)據(jù)庫(kù)實(shí)例用戶名FFF代表指定的數(shù) 據(jù)庫(kù)實(shí)例用戶的密碼(這里指定的實(shí)例是127.0.0.1或Local或.即指本機(jī) SQL自帶的實(shí)例): GGG代表要備份的數(shù)據(jù)庫(kù)名HHH代表數(shù)據(jù)庫(kù)備份的路 徑III代表備份后的名字: JJJ代表用于還原的數(shù)據(jù)庫(kù)備份文件所在的路徑 + 文件名KKK代表還原后的數(shù)據(jù)庫(kù)文件所存放的路徑LLL代表還原數(shù)據(jù)

2、庫(kù)后在 SQL中所顯示的名稱: MMM代表要?jiǎng)h除的數(shù)據(jù)庫(kù) 【分離】請(qǐng)編輯 AAA set AAA=ForestFireControl_StandingBook :- : 2、【附加】請(qǐng)編輯 AAA、BBB、CCC、DDD * : set BBB=C: set CCC=ForestFireCo ntrol_Sta ndi ngBook.mdf set DDD=ForestFireC on trol_Sta ndin gBook_log.ldf : 設(shè)定數(shù)據(jù)庫(kù)的登入【賬號(hào)和密碼】請(qǐng)編輯 EEE、FFF set EEE=sa set FFF=saa :一 : 4、【備份】請(qǐng)編輯 GGG、HHH、II

3、I set GGG=ForestFireControl_StandingBook set HHH=C: set 111=備份的數(shù)據(jù)庫(kù) 2.bak :- : 5、【還原】請(qǐng)編輯 JJJ KKK、備 份的數(shù)據(jù)庫(kù) 2.bak set KKK=C: set LLL=ForestFireControl_StandingBook : : 6、【刪除】請(qǐng)編輯 MMM set MMM=ForestFireControl StandingBook :#* 選擇菜單Echo選項(xiàng)如下(可用 * rem 記事本打開(kāi)對(duì)相應(yīng)參數(shù)重新編輯)Echo * * Echo. Echo 1 分離%AAA% 數(shù)據(jù)庫(kù) Echo. Ec

4、ho 2附加 %BBB% 下的 %CCC%數(shù)據(jù)庫(kù)文件Echo. Echo 3查看數(shù)據(jù)庫(kù)中已存在的非系統(tǒng)表 Echo. Echo 4 備份數(shù)據(jù)庫(kù)%GGG%至U %HHH%III% Echo. Echo 還原%JJJ% 數(shù)據(jù)庫(kù)備份文 件為%LLL%.mdf 和%LLL%_log.ldf 且存放到 %KKK% 下 Echo. Echo 6徹底刪除 數(shù)據(jù)庫(kù)%MMM% Echo. Echo退出請(qǐng)按其他鍵 Echo. Echo * * Echo 選擇后請(qǐng)按回車進(jìn)行確認(rèn) Echo. set /P CHS4f選擇: 1,2,3,4,6? if /I %CHS%=1 goto 1111 if /I %CHS%=

5、2 goto 2222 if /I %CHS%=3 goto 3333 if /I %CHS%=4 goto 4444 if /I %CHS%=5 goto 5555 if /I %CHS%=6 goto 6666 goto zzzz := = :iiii cls set XXX=%Temp%1.sql Echo 正在清理與此數(shù) 據(jù)庫(kù)的連接,請(qǐng)等待 :將下面的這句語(yǔ)句寫到.sql文件里面,再通過(guò)下面的 第二條語(yǔ)句調(diào)用執(zhí)行這個(gè).sql文件的內(nèi)容,第三條語(yǔ)句是刪除這個(gè).sql文件,第四 條語(yǔ)句開(kāi)始分離 %XXX% Echo alter database %AAA% set offline with

6、 rollback after 1; Osql -U%EEE% -P %FFF% -i %XXX% del %XXX% OSQL -E -Q SP_DETACH_DB %AAA%:其他例子:osql -Usa -Psa -S127.0.0.1 -Q sp_detach_db庫(kù)名Echo. Echo. Echo分離SQL中名為%AAA%的數(shù)據(jù)庫(kù)成功 Echo. set CHS=0 p ause cls goto dosmenu := = :2222 cls OSQL -U%EEE% -P %FFF%- S127.0.0.1 -Q sp_attach_db %AAA%,%BBB%CCC%,%BBB

7、%DDD% Echo. Echo. Echo附加%BBB%下的數(shù)據(jù)庫(kù)文件 %CCC%至U SQL中成功 Echo. : OSQL -Usa -Psa -S127.0.0.1 -Q sp_attach_db 庫(kù)名,路徑 數(shù)據(jù) 文件名,路徑 日志文件名set CHS=0 pause cls goto dosmenu := = :3333 cls OSQL -E -Q SELECT NAME,FILENAME FROM MASTER.SYSDATABASES WHERE namemaster and nametem pdb and namemodel and namemsdb 上面語(yǔ)句中 FROM

8、后面的 MASTER.SYSDATABASES表示系統(tǒng)自帶的 MASTER數(shù)據(jù)庫(kù)中的 SYSDATABASES 表 set CHS=0 pause cls goto dosmenu := = :4444 cls del %HHH%III% cls :加上述的 del %HHH%III%語(yǔ)句的作用是為了防止在路徑%III%下已經(jīng)存在同名的數(shù)據(jù)庫(kù)備 份文件,而導(dǎo)致文件疊加到一塊,這也算是SQL的一個(gè)Bug Echo正在備份數(shù)據(jù) 庫(kù),在出現(xiàn)備份成功的提示之前請(qǐng)您耐心等待Echo. Echo. OSQL - U%EEE% -P %FFF% -S127.0.0.1 -d%GGG% -Q Back up

9、DataBase %GGG% to disk = %HHH%III% : OSQL -Usa -Psa -S127.0.0.1- dCirclelmage -Q Backu p DataBase CircleImage to disk = c:111.bak Echo. Echo. Echo恭喜!恭喜!已成功將SQL中的數(shù)據(jù)庫(kù)%GGG%備份成HHH%下文件名為 %III%的文件 Echo. set CHS=0 pause cls goto dosmenu := =:5555 cis Echo 數(shù)據(jù)庫(kù)文件正在還原,在出現(xiàn)還原成 功的提示前請(qǐng)您耐心等待 set XXX=%Temp%1.sql Ec

10、ho. Echo. %XXX% Echo DECLARE bakFile n varchar(1024);-定義 bakFile %XXX% Echo SET bakFile = N%JJJ%; %XXX% Echo. %XXX% Echo DECLARE restore Path n varchar(1024); %XXX% Echo SET restore Path = N%KKK%; %XXX% Echo. %XXX% Echo DECLARE db name nvar char(128); %XXX% Echo SET db name = N%LLL%; %XXX% Echo. %XX

11、X% Echo DECLARE file name n varchar(128); %XXX% Echo SET file name = db name; %XXX% Echo. %XXX% Echo CREATE TABLE #LogicalFileBak(LogicalName varchar(255), P hysicalName varchar(255),T ype varchar(20), FileGrou pName varchar(255), Size varchar(20), MaxSize varchar(20), Fileld VARCHAR(20), CreateLSN

12、VARCHAR(20), Drop LSN VARCHAR(20), Un iqueld un iqueide ntifier. Read On lyLSN VARCHAR(20), ReadWriteLSN VARCHAR(20), Backu pSizel nBytes VARCHAR(255), SourceBlockSize VARCHAR(20), FileGrou pid VARCHAR(20), LogGro up GUID VARCHAR(20), Differe ntialBaseLSN VARCHAR(20), Differe ntialBaseGUID un iqueid

13、e ntifier, IsRead On ly VARCHAR(20), Is Present VARCHAR(20) %XXX% Echo -建一個(gè) 名叫#LogicalFileBak的新表,為什么要建這么多字段的理由見(jiàn) 和 %XXX% Echo. %XXX% Echo INSERT #LogicalFileBak EXECCRESTORE FILELISTONLY FROM DISK = + bakFile + );-從備份文件中讀取邏輯名并 存到#LogicalFileBak 表中 %XXX% Echo. %XXX% Echo DECLARE cur CURSOR FOR SELECT

14、LogicalName,Ty pe,FileGrou pName FROM #LogicalFileBak; -定義一個(gè)游標(biāo)cur(相當(dāng)于數(shù)據(jù)集)并將搜索結(jié)果放到其中%XXX% Echo DECLARE LogicalName n varchar(128),Ty pe char(1),FileGrou pName nvarchar(128);-定義新變量 %XXX% Echo. %XXX% Echo DECLARE cmd nvarchar(4000);-定義新變量 %XXX% Echo SET cmd = RESTORE DATABASE + dbname + FROM DISK = ” +

15、 bakFile + ;-將這一串語(yǔ)句賦 給 cmd %XXX% Echo SET cmd = cmd + WITH REP LACE-接著將語(yǔ) 句賦給 cmd %XXX% Echo. %XXX% Echo OPEN cur;-打開(kāi)游標(biāo) %XXX% Echo FETCH NEXT FROM cur INTO LogicalName,Ty pe,FileGrou pName;-從這句往下的幾句語(yǔ)句用來(lái)還原數(shù)據(jù) 庫(kù),FETCH NEXT表示逐條讀取游標(biāo)中的數(shù)據(jù) %XXX% Echo WHILE FETCH_STATUS = 0 %XXX% Echo BEGIN %XXX% Echo SET cmd

16、 = cmd + ,MOVE + LogicalName + ” TO ” + restore Path %XXX% Echo + file name + CASE WHEN Ty pe = D AND FileGrou pName = P RIMARY %XXX% Echo THEN .mdf %XXX% Echo WHEN Type = D AND FileGroupName y PRIMARY %XXX% Echo THEN .ndf %XXX% Echo ELSE _log.ldf %XXX% Echo END + %XXX% Echo FETCH NEXT FROM cur INTO

17、 LogicalName,Ty pe,FileGrou pName; %XXX% Echo END %XXX% Echo CLOSE cur;-關(guān)閉游標(biāo) %XXX% Echo DEALLOCATE cur;-釋放游標(biāo) %XXX% Echo. %XXX% Echo EXEC(cmd); %XXX% Echo. %XXX% Echo DROP TABLE #LogicalFileBak;-刪除 #LogicalFileBak 表 Osql - U%EEE% -P %FFF% -i %XXX% del %XXX% Echo. Echo. Echo 恭喜!已成 功將JJJ%還原成%LLL%,且還原后的

18、文件存放在 KKK%下Echo. pause set CHS=0 cls goto dosmenu := =:ZZZZ REM 退出 exit : a:分離數(shù)據(jù)庫(kù)的命令:Sp_detach_db數(shù) 據(jù)庫(kù)名:連接數(shù)據(jù)庫(kù)的命令:Sp_attach_db或者 sp_attach_single_file_db : sp _attach_db db name = db name, file namel = file name_ n ,.16: sp _attach_s in gle_file_db db name = db name, p hys name = physical, name: SQL S

19、ever7.0和 SQL Server 2000的數(shù)據(jù)庫(kù)文 mdf和ldf兩個(gè)文件都備份下來(lái),mdf文件是數(shù) =:6666 Echo真的要?jiǎng)h除嗎?刪除后將不可恢復(fù) Echo. set /P QR=i定刪除請(qǐng)按y,放棄刪除請(qǐng)按其他鍵,請(qǐng)選擇? cls if /I %QR%=y (Echo正在刪除,請(qǐng)等待 ::下面這兩句用于清除連接:%Temp%1.sql Echo alter database %MMM% set offli ne with rollback after 1; :Osql -U%EEE%- P%FFF% -i %XXX% cls :下面這句開(kāi)始刪除 OSQL -U%EEE% -P

20、%FFF%- S127.0.0.1 -Q Drop DataBase %MMM%:其他例子:OSQL -Usa -Psa- S127.0.0.1 -Q Drop DataBase庫(kù)名del %Temp%1.sql Echo. Echo 刪除 SQL 中 名為AAA% 的數(shù)據(jù)庫(kù)及源文件成功 Echo. pause ) set QR=0 set CHS=0 cls goto dosmenu := 使用此方法可以正確附加和分離 件,要點(diǎn)是備份的時(shí)候一定要將 據(jù)庫(kù)數(shù)據(jù)文件,ldf是日志文件。::OSQL-? 顯示幫助(具體如下所示):用法:osql -U登錄ID -P密碼:-S服務(wù)器-H主 機(jī)名-E可

21、信連接:-d使用數(shù)據(jù)庫(kù)名稱-1登錄超時(shí)值-t查詢超時(shí)值:-h標(biāo) 題-s列分隔符-W列寬:-a數(shù)據(jù)包大小-e回顯輸入-1允許帶引號(hào)的標(biāo)識(shí) 符:-L列出服務(wù)器-C命令結(jié)束-D ODBC DSN名稱:-q 命令行查詢-Q 命令行查詢并退出:-n刪除編號(hào)方式-m錯(cuò)誤級(jí)別:-r發(fā)送到stderr的消息 -V嚴(yán)重級(jí)別:-i輸入文件-o輸出文件:-P打印統(tǒng)計(jì)信息-b出錯(cuò)時(shí)中止批 處 理:= =:可通過(guò)下面的語(yǔ)句查詢已 有備份庫(kù)的邏輯文件名,以用于 還原數(shù)據(jù)庫(kù)語(yǔ)句操作 中的操作:OSQL -Usa-備份的數(shù)據(jù)庫(kù)1 : :OSQL 備份的數(shù)據(jù)庫(kù)1 C:1234.txt : =:還原數(shù)據(jù)庫(kù)語(yǔ)句 操作::其中的數(shù)據(jù)

22、庫(kù)的邏輯文件名 和數(shù)據(jù)庫(kù)日志的邏輯文件名 是通過(guò)上述的語(yǔ) 句來(lái)查詢的:格式說(shuō)明::osql -E -d CircleImage -Q restore databases份后 SQL 中看到的數(shù)據(jù)庫(kù)名from disk=用于還原的備份文件的路徑+文件名with move 數(shù) 據(jù)庫(kù)的邏輯文件名TO 備份后的路徑+實(shí)際文件名,MOVE 數(shù)據(jù)庫(kù)日志的邏輯文 件名TO 備份后的路徑+實(shí)際文件名:實(shí)例::OSQL -Usa -Psa -S127.0.0.1 -Q restore database CircleImage from disk=CCirclelmage&份with move Circlelma

23、ge_Data to c:Circlelmage.mdf,move :CircleImage_Log to c:CircleImage_log.ldf:上述這么長(zhǎng)的語(yǔ)句中切不可出現(xiàn)回車等換行符,且參數(shù) 的大小寫是不可隨意更改 的:卄= =:更改數(shù)據(jù)庫(kù)備份文件邏輯名 的方法::alter database數(shù)據(jù)庫(kù)名 modify file (name=邏輯名,newname噺邏輯名): 事實(shí)上,上面的語(yǔ)句是更改了 sysfiles系統(tǒng)表中的name字段。:可通過(guò)SELECT 安吉 數(shù)據(jù)安吉 * FROM sysfiles 語(yǔ)句查詢本庫(kù)的 sysfiles表的字段,如下::fileid groupi

24、d size 測(cè)試用數(shù)據(jù) 測(cè)試用 ForestFireCo ntrol_Sta ndin gBook_log.ldf : :RESTORE FILELISTONLY語(yǔ)句返回的結(jié)果集如果傳遞到參數(shù)呢?請(qǐng)高 手 指教。:正常情況下,在查詢分析器中 執(zhí)行:RESTORE FILELISTONLY From disk = p ath:會(huì)返回一個(gè)結(jié)果集。例如::LogicalName P hysicalName Ty pe FileGro up Name Size MaxSize : :Northwi nd C:.northw nd.mdf D P RIMARY 3407872 351843720 :

25、Northwi nd_log C:.northw nd.ldf L NULL 1048576 351843720 := =:MS sql server 2000, 2005 如何取出 restore filelist only 結(jié)果集: 這是 SQL SERVER 2000 中的原形代碼:use master : go : create table #restoreFileList (LogicalName varchar(255), P hysicalName varchar(255),T ype varchar(20). FileGro up Name varchar(255), Size

26、 varchar(20), MaxSize varchar(20) ) : declare file name varchar(1000) : select file name = e:svwlx.bak : insert into #restoreFileList execute(restore filelisto niy from disk=+file name+) : in sert into #restoreFileList execute(restore filelisto nIy from disk=e:svwlx.bak”): select * from #restoreFileList : 這是 SQL SERVER 2005 中的原形代碼:USE master : GO : create table #resto

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論