線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:858
推到 Plurk!
推到 Facebook!

無法用程式還原資料庫

尚未結案
will
中階會員


發表:176
回覆:135
積分:62
註冊:2002-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-28 12:04:55 IP:220.141.xxx.xxx 未訂閱
我想在程式內加入備份和還原資料庫的功能 備份沒有問題, 但還原卻出現了 User does not have permission to RESTORE database 'Health'. RESTORE DATABASE is terminating abnormally 的錯誤訊息 我備份的語法如下: backup database Health to disk='D:\Data\ASPNET\Health8\Backup\myback.bck' with init 還原的語法如下: restore database Health from disk = 'D:\Data\ASPNET\Health8\Backup\myback.bck' 我是以Windows 整合驗證接接資料庫的 我把還原的語法拿到Enterprise Manager 內是可以執行的 請問要如何解決呢?
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-28 15:16:39 IP:218.94.xxx.xxx 未訂閱
程式如下:
function TDBRestoreFrm.RestoreDB(strDBName,strFileName: string): boolean;
var
  strSQL: string;
begin
  Result := false;
  strSQL := 'RESTORE DATABASE ['   strDBName   '] FROM  DISK = N'''   strFileName   ''' WITH  FILE = 1,  NOUNLOAD ,  STATS = 10,  RECOVERY,  REPLACE';      try
    ADOConnectionSQL.DefaultDatabase := 'master';
    ADODataSetWho.Recordset := ADOConnectionSQL.Execute('sp_who');
    ADODataSetWho.First;
    while not ADODataSetWho.Eof do
    begin
      if ADODataSetWho.FieldByName('dbname').AsString = strDBName then
      begin
        ADOConnectionSQL.DefaultDatabase := strDBName;
        MessageBox(Application.Handle,Pchar('用户'   ADODataSetWho.FieldByName('loginame').AsString   '正在使用数据库'   strDBName   '!'),'恢复错误',MB_OK   MB_ICONERROR);
        Exit;
      end;
      ADODataSetWho.Next;
    end;        ADOConnectionSQL.Execute(strSQL);
  except
    MessageBox(Application.Handle,'无法恢复数据库文件!','恢复错误',MB_OK   MB_ICONERROR);
    Exit;
  end;
  Result := true;
end;    procedure TDBRestoreFrm.Button1Click(Sender: TObject);
begin
ADOConnectionSQL.Close;
ADOConnectionSQL.ConnectionString:='Provider=SQLOLEDB.1;Password=''' Trim(Password.Text) 
''';Persist Security Info=True;User ID=''' Trim(UserName.Text) ''';Data Source=''' Trim(ServerName.Text) '''';
Try
ADOConnectionSQL.Open;
if ADOConnectionSQL.Connected  then
    if RestoreDB(Trim(DataBaseName.Text),Trim(DBRestoreFile.Text)) then
       MessageBox(handle,'数据库成功恢复!','系统提示',mb_ok);
Except
on ex:Exception do
 raise Exception.Create('出错提示:' #13#10 ex.Message);
end;
end;    
风花雪月 e梦情缘 网络代号:wnhoo or sos_admin 网名:e梦缘 Mail:wnhoo@163.com
系統時間:2024-05-20 10:55:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!