******不能备份数据库,代码如下,请指出是那里出现错误。*************
Try
//将ADOQuery的联结属性设为空
dm.ADOQry_BakupData.Connection:=nil;
//将联结数据库的ADOConneciton断掉
dm.ADOConnection1.Connected:=False;
dm.ADOConnection1.KeepConnection:=False; //定义备份用的ADOConneciton联结属性
dm.ADOConnBackup.ConnectionString:='Provider=SQLOLEDB.1;'
+'Persist Security Info=False;User ID=sa;Initial Catalog=master;'
+'Data Source='+ServerName+';Use Procedure for Prepare=1;'
+' Auto Translate=True;Packet Size=4096;Workstation ID='+ServerName;
//自己控制登陆,
dm.ADOConnBackup.LoginPrompt:=False;
dm.ADOConnBackup.Open('sa',Trim(Edit2.Text));
dm.ADOConnBackup.DefaultDatabase:='master';
//dm.ADOConnBackup.Connected:=True; dm.ADOQuery1.Close;
dm.ADOQuery1.sql.clear;
dm.ADOQuery1.sql.add('Restore database [xxxx] from disk='''+backupPath+''' with replace');
Try
dm.ADOQuery1.Excesql;
ShowHintInfo('本次恢复成功')
Except
ShowHintInfo('本次恢复失败');
end;
Finally
dm.ADOQuery1.close;
dm.ADOConnBackup.Connected:=False;
dm.ADOConnection1.Connected:=True;
dm.ADOConnection1.KeepConnection:=False;
dm.ADOQry_BakupData.Connection:=dm.ADOConnection1;
end;//Try...Finally's end
Try
//将ADOQuery的联结属性设为空
dm.ADOQry_BakupData.Connection:=nil;
//将联结数据库的ADOConneciton断掉
dm.ADOConnection1.Connected:=False;
dm.ADOConnection1.KeepConnection:=False; //定义备份用的ADOConneciton联结属性
dm.ADOConnBackup.ConnectionString:='Provider=SQLOLEDB.1;'
+'Persist Security Info=False;User ID=sa;Initial Catalog=master;'
+'Data Source='+ServerName+';Use Procedure for Prepare=1;'
+' Auto Translate=True;Packet Size=4096;Workstation ID='+ServerName;
//自己控制登陆,
dm.ADOConnBackup.LoginPrompt:=False;
dm.ADOConnBackup.Open('sa',Trim(Edit2.Text));
dm.ADOConnBackup.DefaultDatabase:='master';
//dm.ADOConnBackup.Connected:=True; dm.ADOQuery1.Close;
dm.ADOQuery1.sql.clear;
dm.ADOQuery1.sql.add('Restore database [xxxx] from disk='''+backupPath+''' with replace');
Try
dm.ADOQuery1.Excesql;
ShowHintInfo('本次恢复成功')
Except
ShowHintInfo('本次恢复失败');
end;
Finally
dm.ADOQuery1.close;
dm.ADOConnBackup.Connected:=False;
dm.ADOConnection1.Connected:=True;
dm.ADOConnection1.KeepConnection:=False;
dm.ADOQry_BakupData.Connection:=dm.ADOConnection1;
end;//Try...Finally's end
不用断开AdoConnnection
用AdoCommand
with AdoCommand1 do
begin
CommandText:='use Master';
Execute;
CommandText:='execute sp_helpdevice';
Execute ;
CommandText:='Restore database '+Db_name+' From disk='''+FileName+''' with replace';
Execute ;
CommandText:='Use '+Db_name;
Execute ;
end;
2 用sp_who或者select * from sysproccesses查看是否有其他用户在使用xxx数据库
3 将使用xxx数据库的进程kill proccess
4 然后再恢复