首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

数据库还原异常

2012-02-16 
数据库还原错误我的数据库还原代码如下:procedureTDataBack.RecoverDataClick(Sender:TObject)varDataPat

数据库还原错误
我的数据库还原代码如下:
procedure   TDataBack.RecoverDataClick(Sender:   TObject);
var   DataPath:   string;
begin
    self.Caption   :=   '正在恢复数据.... ';
    adodm.XQconn.Close;
    adodm.XQconn.Connected   :=   false;
    OpenDialog1.Filter   :=   '备份文件   (*.back)|*.back|所有文件   (*.*)|*.* ';   //设置备份文件后缀
    OpenDialog1.InitialDir   :=   ExtractFileDir(Application.ExeName)   +   '\backupdata ';
    //设置备份路径
    if   OpenDialog1.Execute   then
        DataPath   :=   OpenDialog1.FileName;
    if   DataPath   <>   ' '   then
    begin
        if   application.MessageBox( '此操作将使上次备份以来的所有数据丢失,是否继续? ',   '恢复数据 ',   MB_OKCANCEL)   =   idOK   then
        begin
            a1.Active   :=   true;
            adodm.cback.CommandText   :=   'restore   database   XQ   from   disk= ' ' '   +   DataPath   +   ' ' ' '   +   '   with   replace ';   //恢复数据命令语句
            try
                try
                    adodm.cback.Execute;
                    //执行恢复过程
                    showmessage( '         恢复成功! ');
                except
                    showmessage( '数据库正在被使用!请确定已关闭其它使用该数据库程序! ');
                    showmessage( '         恢复失败! ');
                end;
            finally
                a1.Active   :=   false;
                try
                //   打开各个数据表是否有错误
                    adodm.YHTS.Open;
                    adodm.part.Open;
                    adodm.client.Open;
                    adodm.Toper.Open;
                    adodm.Tuser.Open;
                    adodm.ZHBX.Open;
                    adodm.Model.Open;
                    adodm.ClientFamily.Open;
                    adodm.ChargeItem.Open;
                    adodm.ClientRoom.Open;
                    adodm.Charge.Open;
                    adodm.ClientPay.Open;


                    adodm.ClientAdvance.Open;
                except
                    showmessage( '程序运行发生不可预知错误,请重新启动程序! ');
                    //结束该程序
                    Application.Terminate;
                end;
            end;
        end;
    end;
    self.Caption   :=   '数据备份和恢复 ';
end;
我数据模块ADODM里有两个ADOCONNECTION。一个连接用户数据库(XQCONN);一个连接了(BACKCONN)MASTER,可是运行还原数据库时候,总出现数据库正在使用的问题。请各位高手赐教啦……CBACK:TADOCOMMAND它是连接BACKCONN的。

[解决办法]
连接串连接到MASTER表,
KILL所有连接(要恢复数据库)
select spid from master..sysprocesses where dbid=db_id( '表名 ')
kill spid (所有连接)

热点排行