我在程序中通过ADO实现数据库备份和恢复,由于程序要连接到要恢复的数据库上,在恢复时出现错误:’因为数据库正在使用,所以未能获得对数据库的排它访问权。’,怎样才能解决这个问题?希望高手指点,并能给出具体例子。万分感激!
解决方案 »
- 类似delphi 拖动Edit的问题
- 高分寻求两台SQL服务器的数据同步(在网上没有找到合适的资料)~~~~~ 解决可另给分
- 想不在当前窗体上输入string,又不想新建窗体、TEdit==,怎么做?
- 请教如何在一个字符串中取其中的几个字符;
- 在fastreport中打印数据库blobp字段图象
- 有谁用过flatstyle控件,它的按钮没有onkeydown方法,请问有没有办法加上
- 怎么让dbgrideh的某一列(数据类型为integer)显示时前面自动加上字串 'abc' ???
- 在delphi中怎样动态确定word模板中的标号?
- 使用delphi5中的dbgrid显示SQL server中的数据时,右侧滚动条中的滑块只能在头,中,尾三个位置,怎么解决?
- dbgrideh问题
- 请问怎么能使程序获取系统中运行程序的所有字符信息?就像及时翻译软件一样..
- 多文档程序如何用COM实现其子文档
1 不要将程序连接到你要恢复的数据库上,你可以用use master
2 你可以用sp_who或者
select dbname = case
when dbid = 0 then null
when dbid <> 0 then db_name(dbid)
end, loginame from master..sysprocesses where hostname is not null
group by dbid,loginame
等列出现在正在使用的进程/用户
3 调用kill proccess干掉他们
4 然后再进行恢复???不是刚有帖子,我回答了么?
备份 BACKUP DATABASE database_name TO 文件名
恢复 RESTORE DATABASE 名誉database_name FROM backup_device
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
try
adoconnection1.Connected:=False;
adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=FRIEND-YOFZKSCO;'+
'Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=FRIEND-YOFZKSCO;Use Encryption for Data=False;Tag with column collation when possible=False';
adoconnection1.Connected:=True;
with adoQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('Backup DataBase sfa to disk ='''+opendialog1.FileName+'''');
ExecSQL;
end;
except
ShowMessage('±?·Y꧰ü');
Exit;
end;
end;
Application.MessageBox('1§?2?ú£?êy?Y±?·Y3é1|','ìáê?',MB_OK + MB_ICONINFORMATION);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
try
adoconnection1.Connected:=false;
adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=FRIEND-YOFZKSCO;'+
'Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=FRIEND-YOFZKSCO;Use Encryption for Data=False;Tag with column collation when possible=False';
adoconnection1.Connected:=true;
with adoQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('Restore DataBase sfa from disk ='''+opendialog1.FileName+'''');
ExecSQL;
end;
except
ShowMessage('???′꧰ü');
Exit;
end;
end;
Application.MessageBox('1§?2?ú£?êy?Y???′3é1|','ìáê?',MB_OK + MB_ICONINFORMATION);
end;
use [master];//连接别的数据库
Restore DataBase MyDB From Disk='c:\data'//data为备份的数据库文件
2.設置另一個adoconnection2連接master數據庫。
3.备份:BACKUP DATABASE 數據庫名 TO 文件名 with init
4.恢复: RESTORE DATABASE 數據庫名 FROM 文件完整路徑 with replace