用sql语句 数据库备份 if savedialog1.Execute then filstr:=savedialog1.FileName ; try with jyd.command do begin close; sql.clear; sql.text:=format('backup database jydfc to disk=''%s'' with init',[filstr]); execsql; end; except on exception do if jyd.ADOConnection1.InTransaction then jyd.ADOConnection1.RollbackTrans end; end;数据库恢复 if opendialog1.Execute then filstr:=opendialog1.FileName ; messagedlg('恢复过程中将会出现短时间的类式死机现象,请耐心等待!!',mtconfirmation,[mbok],0); jyd.ADOConnection1.Connected:=false; jyd.ADOCommand1.CommandText:='alter database jydfc set offline with rollback immediate'; jyd.ADOCommand1.Execute ; jyd.ADOCommand1.CommandText:=format('restore database jydfc from disk=''%s''',[filstr]); jyd.ADOCommand1.Execute; jyd.ADOCommand1.CommandText:='alter database jydfc set online with rollback immediate'; jyd.ADOCommand1.Execute ; end;我用的数据库是sql server
以下是一段CB程序,自己改为Delphi的就可以了。 用SQL Server 数据库,备份到数据库服务器端: 1、在master库中建立备份和恢复存储过程。CREATE PROCEDURE backupdb @database varchar(10), @directory varchar(100) AS backup database @database to disk=@directory2、取得服务器路径。AnsiString __fastcall TFrmDM::GetSqlServerPath(){ AnsiString result,tmp; TADOQuery *Query=new TADOQuery(this); Query->Connection=ADOConnection_Master; Query->Close(); Query->SQL->Clear(); Query->SQL->Add("select filename from sysdatabases where name='master'"); Query->Open(); tmp=Query->FieldByName("filename")->AsString; result=tmp.SubString(1,tmp.Length()-15); Query->Free(); return result; }
数据库备份
if savedialog1.Execute then
filstr:=savedialog1.FileName ;
try
with jyd.command do
begin
close;
sql.clear;
sql.text:=format('backup database jydfc to disk=''%s'' with init',[filstr]);
execsql;
end;
except
on exception do
if jyd.ADOConnection1.InTransaction then
jyd.ADOConnection1.RollbackTrans
end;
end;数据库恢复 if opendialog1.Execute then
filstr:=opendialog1.FileName ;
messagedlg('恢复过程中将会出现短时间的类式死机现象,请耐心等待!!',mtconfirmation,[mbok],0);
jyd.ADOConnection1.Connected:=false;
jyd.ADOCommand1.CommandText:='alter database jydfc set offline with rollback immediate';
jyd.ADOCommand1.Execute ;
jyd.ADOCommand1.CommandText:=format('restore database jydfc from disk=''%s''',[filstr]);
jyd.ADOCommand1.Execute;
jyd.ADOCommand1.CommandText:='alter database jydfc set online with rollback immediate';
jyd.ADOCommand1.Execute ; end;我用的数据库是sql server
用SQL Server 数据库,备份到数据库服务器端:
1、在master库中建立备份和恢复存储过程。CREATE PROCEDURE backupdb
@database varchar(10),
@directory varchar(100)
AS
backup database @database
to disk=@directory2、取得服务器路径。AnsiString __fastcall TFrmDM::GetSqlServerPath(){
AnsiString result,tmp;
TADOQuery *Query=new TADOQuery(this);
Query->Connection=ADOConnection_Master;
Query->Close();
Query->SQL->Clear();
Query->SQL->Add("select filename from sysdatabases where name='master'");
Query->Open();
tmp=Query->FieldByName("filename")->AsString;
result=tmp.SubString(1,tmp.Length()-15);
Query->Free();
return result;
}
try{
path=FrmDM->GetSqlServerPath()+"backup\\";
FrmDM->ADOStoredProc1->Close();
FrmDM->ADOStoredProc1->Connection=FrmDM->ADOConnection_Master;
FrmDM->ADOStoredProc1->Prepared=true;
FrmDM->ADOStoredProc1->ProcedureName="backupdb;1";
FrmDM->ADOStoredProc1->Parameters->ParamByName("@database")->Value = "db_name_to_backup";
FrmDM->ADOStoredProc1->Parameters->ParamByName("@directory")->Value =path+"db_name_to_backup"+d;
FrmDM->ADOStoredProc1->ExecProc();
Application->MessageBox("备份完成","提示",MB_OK+MB_ICONINFORMATION);
this->Close();
}
catch(...){
Application->MessageBox("备份出错,请重新再来","警告",MB_OK+MB_ICONWARNING);
return;
}
备份:
procedure tform1.btnbuckupclick(sender:tobject);
var
QryTmp:Tquery;
begin
qrytmp:=Tquery.create(self);
qryTmp.databasenme:=database1.databasename
QryTmp.sql.text:='Backup database 数据库 to disk='''+
你的路径 +'''';
QryTmp.execsql;
end; 恢复:
procedure tform1.btnrestoreclick(sender:tobject);
var
QryTmp:Tquery;
begin
qrytmp:=Tquery.create(self);
qryTmp.databasenme:=database1.databasename;
database1.connect:=false;//记住,关闭
QryTmp.sql.text:=' use master '+
+' restore database 数据库 to from='''+
你的路径 +'''';
QryTmp.execsql;
database1.connect:=true;//
end;