数据库备份相关!在线等!
我用delphi2005+sql2000,如果一步一步执行程序,那OK,可是直接运行就有问题了。代码如下:主要目的是先关闭sql服务,再复制数据库,再打开sql服务管理
代码:
var
s1,s2:string;
begin
if edit1.text <> ' ' then
try
//关闭sql服务
winexec(pchar( 'cmd.exe /c net stop '+ 'mssqlserver '),sw_hide);
except
messagedlg( '关闭sql服务不成功! ',mterror,[mbyes],0);
end;
//备份
try
s1:= extractfilepath(paramstr(0))+ 'data\salary_Data.MDF ';
s2:= extractfilepath(paramstr(0))+ 'data\salary_Log.LDF ';
copyfile(pchar(s1),pchar(edit1.Text+ 'salary_Data.MDF '),true);
copyfile(pchar(s2),pchar(edit1.Text+ 'salary_Log.LDF '),true);
except
messagedlg( '数据库还原不成功! ',mterror,[mbyes],0);
end;
//打开sql服务
try
winexec(pchar( 'cmd.exe /c net start '+ 'mssqlserver '),sw_hide);
except
messagedlg( '打开sql服务不成功! ',mterror,[mbyes],0);
end;
messagedlg( '数据库还原成功! ',mtconfirmation,[mbyes],0);
application.Terminate;
[解决办法]
关闭和开启需要时间,会不会是没有关闭就开始备份了?加延时试试,最好备份前判断数据库是否已经关闭了,可以尝试打开,直到违法打开为止,这时说明确实已经关闭了。