全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1788
推到 Plurk!
推到 Facebook!

SQL2000資料庫備份還原的問題

答題得分者是:wameng
jch
中階會員


發表:111
回覆:224
積分:66
註冊:2003-12-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-18 10:40:08 IP:218.162.xxx.xxx 未訂閱
小弟於先前文章中找到資料庫備份與還原的方法 資料備份: BACKUP DATABASE TestDB TO DISK = 'C:\TestDB.bak' 資料回存: RESTORE DATABASE TestDB FROM DISK = 'C:\TestDB.bak' 以上兩段SQL語法均用Query.ExecSQL;執行 但是若該資料庫已經存在,是否需先先將該資料庫刪除呢?該如何做才能將還原後的資料庫內容只有'C:\TestDB.bak'的內容呢?? ======================== 我是DELPHI5的初學者
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-18 10:48:30 IP:61.222.xxx.xxx 未訂閱
需要刪除deletetable在回復吧!
jch
中階會員


發表:111
回覆:224
積分:66
註冊:2003-12-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-18 10:50:52 IP:218.162.xxx.xxx 未訂閱
那語法該如何下呢?? ======================== 我是DELPHI5的初學者
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-18 10:58:01 IP:61.222.xxx.xxx 未訂閱
可以用 with table1 do begin active:=false; databasename:='aa'; tablename:='aa.db'; deletetable; end; end;
jch
中階會員


發表:111
回覆:224
積分:66
註冊:2003-12-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-18 11:02:02 IP:220.130.xxx.xxx 未訂閱
DROP DATABASE '資料庫名稱' 用這個方法是否更直接呢?? ======================== 我是DELPHI5的初學者
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-18 14:02:20 IP:203.95.xxx.xxx 未訂閱
用 drop 比較正確, 一般會這樣寫,
IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'test')
        DROP DATABASE [test]
jch
中階會員


發表:111
回覆:224
積分:66
註冊:2003-12-01

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-18 14:15:30 IP:163.17.xxx.xxx 未訂閱
IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'test') DROP DATABASE [test] 這串指令用ADOQUERY該如何下呢?? ======================== 我是DELPHI5的初學者
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-10-18 15:25:47 IP:203.95.xxx.xxx 未訂閱
就直接下就可以了, 記得是用 ExecSQL 而不是 Open , 因為是執行指令. 但要注意權限是否充足, 使用 DROP DATABASE 權限預設授與資料庫擁有人、sysadmin 與 dbcreator 伺服器固定角色的成員!!
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-10-18 15:46:37 IP:202.62.xxx.xxx 未訂閱
您好﹗    回存的語法﹐好像記得以下的寫法也可以﹐參考一下﹕
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('IF EXISTS (SELECT name FROM SysObjects WHERE ');
  ADOQuery1.SQL.Add('name = ''TableName'') DROP Table TableName ');
  ADOQuery1.SQL.Add('Select * Into TableName From TableBackup');
  ADOQuery1.ExecSQL;
end;
========================= 大病初愈﹐休養調整中... =========================
------
忻晟
jch
中階會員


發表:111
回覆:224
積分:66
註冊:2003-12-01

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-10-19 09:18:49 IP:218.162.xxx.xxx 未訂閱
小弟這樣寫不行喔!! with SQL do begin Clear; Add('IF EXISTS (SELECT name FROM SysObjects WHERE'); Add('name = :tname) DROP Table Table :tname'); Add('Select * Into TableName From TableBackup'); end; Parameters.ParamByName('tname').Value := ed1.Text; ExecSQL; ======================== 我是DELPHI5的初學者
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-10-19 09:28:08 IP:202.62.xxx.xxx 未訂閱
引言: 小弟這樣寫不行喔!! with SQL do begin Clear; Add('IF EXISTS (SELECT name FROM SysObjects WHERE'); Add('name = :tname) DROP Table Table :tname'); Add('Select * Into TableName From TableBackup'); end; Parameters.ParamByName('tname').Value := ed1.Text; ExecSQL;
您好﹗ 以上的TableName應替換成回存目的資料表名稱﹒TableBackup應替換成備份資料表名稱﹒ ========================= 大病初愈﹐休養調整中... =========================
------
忻晟
jch
中階會員


發表:111
回覆:224
積分:66
註冊:2003-12-01

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-10-19 09:37:14 IP:218.162.xxx.xxx 未訂閱
多謝各位大哥鼎力相助,很遺憾分數只能給一個人..... ======================== 我是DELPHI5的初學者
系統時間:2024-07-03 18:59:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!