数据库恢复出错,大家帮忙啊,在线等!(50分)

  • 主题发起人 主题发起人 hyzb
  • 开始时间 开始时间
H

hyzb

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TF_Main.RestoreDatabase(filename:AnsiString);<br>var<br> &nbsp; Restore,str:AnsiString;<br> &nbsp; ini:TIniFile;<br>begin<br> &nbsp; &nbsp;DM.AQ_SQL.Close;<br> &nbsp; &nbsp;DM.AQ_SQL.SQL.Clear;<br> &nbsp; &nbsp;Restore := 'RESTORE DATABASE '; //生成数据库还原命令赋Restore字符串<br> &nbsp; &nbsp;ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.INI' ));//打开医院信息系统数据库INI配置文件<br> &nbsp; &nbsp;str := ini.ReadString('Database','Initial Catalog','Archives'); //从配置文件读数据库名<br> &nbsp; &nbsp;Restore := Restore+str; &nbsp; &nbsp;//追加医院信息系统数据库名<br> &nbsp; &nbsp;DM.AQ_SQL.SQL.Add(Restore);//增加还原数据库SQL命令语句<br> &nbsp; &nbsp;str := 'FROM DISK = '''; &nbsp; //生成还原数据库文件的路径和文件名字符串<br> &nbsp; &nbsp;str := str+filename;<br> &nbsp; &nbsp;str := str+'''';<br> &nbsp; &nbsp;DM.AQ_SQL.SQL.Add(str); &nbsp; &nbsp;//增加还原数据库文件的路径和文件名字符串SQL语句<br> &nbsp; &nbsp;DM.AQ_SQL.SQL.Add(' WITH norecovery'); //还原数据库SQL语句WITH参数设定,完整还原数据库<br> &nbsp; &nbsp;try<br> &nbsp; &nbsp; &nbsp;DM.AQ_SQL.ExecSQL;<br> &nbsp; &nbsp;except<br> &nbsp; &nbsp; &nbsp;Application.MessageBox('数据库恢复出错', '错误!', mrOK);<br> &nbsp; &nbsp;end;<br>end;<br>这是数据库恢复的代码,其中的DM.AQ_SQL是用于数据库备份和恢复的adoquery控件,每次执行到 DM.AQ_SQL.ExecSQL时就报错:<br>exclusive access could not be obtained because the database is in use <br>请问各位该怎么解决啊?
 
你这个AQ_SQL连那个库?? &nbsp;不会是要回复的库吧, 应该连一个其他的,一般大家选择master.
 
我是把DM.AQ_SQL联到adoconnection了,这样不行吗?<br>请问要联到master应该怎么做呢
 
exclusive access could not be obtained because the database is in use <br>数据库正在使用中,关闭所有的联接到此数据的query和tabel以及ADOConnection,<br>Initial Catalog=master;
 
var sqlstr:string;<br>begin <br>sqlstr :=' RESTORE DATABASE ' +{这里是你的数据库名};<br>sqlstr :=sqlstr+' FROM disk = '+QuotedStr({这里是你备份在硬盘里的文件名带路径});<br>ADOCommand1.ConnectionString:='Provider=SQLOLEDB.1;Password='{数据库登录密码}';Persist Security Info=True;User ID='{数据库登录用户ID}';Initial Catalog=master;Data Source='{这里是数据库服务器名}'';<br> &nbsp;ADOCommand1.CommandText:=sqlstr;<br> &nbsp;ADOCommand1.Execute;<br> &nbsp; &nbsp; showmessage('还原数据库执行成功');<br>end;
 
我将DM.AQ_SQL.ConnectionString :='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master';<br>后,恢复时还是报错。我将SQL Server Service Manger停用后,恢复时也报错说数据库不存在
 
第一,你可以先停止SQL SERVER的服务,Net stop mssqlserver 命令<br>第二,启动服务:net start mssqlserver <br>第三,连接Master,恢复数据库restore<br>这样就万无一失了
 
to ProLove,<br>你的方法的确可行,不过这样操作起来比较麻烦,能不能用代码实现呢?谢谢
 
to ProLove,<br>我按你的方法恢复后,无法登录我的程序了,报错说找不到数据库HMIS(就是我想备份和恢复的那个数据库)。打开企业管理器一看,HMIS中的iterm全都没了,这是怎么回事啊?
 
恢复没有成功,或者是恢复的数据的文件(备份文件)不完整造成的,这样你可以查找这个文件的MDF和LDF文件,找到后,用附加数据库吧!
 
恢复没有成功,或者是恢复的数据的文件(备份文件)不完整造成的,这样你可以查找这个文件的MDF和LDF文件,找到后,用附加数据库吧!
 
后退
顶部