在数据库还原中,我写了这样一个过程:
procedure CopyDataBase(var Bool: Boolean; str, path, server,
passw: string);
var
Conn:TADOConnection;
query:TADOQuery;
str1:string;
begin
Conn:=TADOConnection.Create(self);
query:=TADOQuery.create(self);
str1:='Provider=SQLOLEDB.1;';
str1:=str1+'PassWord='+passw+';'+'Persist Security Info=True;User ID=sa;';
str1:=str1+'Data Source='+server;
conn.Connectionstring:=str1;
conn.LoginPrompt:=false;
query.Connection:=conn;
if not Bool then begin
try
with query do
begin
Close;
Sql.Clear;
sql.text:=Format('BACKUP DATABASE skjc TO DISK=''%s'' WITH INIT',[path]);//将数据库备份到用户自选的目录去。
execsql;
//还原数据库
Close;
Sql.Clear;
sql.add('restore database skjc from disk='''+trim(path)+'''');
execsql;
close;
end;
except
on exception do
if Conn.InTransaction then
Conn.RollbackTrans;
end;
end
else
begin
try
with query do
begin
close;
sql.Clear;
sql.Add('select ''存在'' where exists (select * from sysdatabases where name =''skjc'')');
open;
if recordcount=0 then begin
//创建数据库
close;
sql.clear;
sql.add('create database skjc');
execsql;
end; //还原数据库
Close;
Sql.Clear;
sql.add('restore database skjc from disk ='''+trim(path)+'''');
execsql;
close;
end;
except
on exception do
if Conn.InTransaction then
Conn.RollbackTrans;
end;
end;
conn.Free;
query.Free;
end;然后调用:
CopyDataBase(bool,'','数据备份文件\skjc',computer,password);
注意:这个目录一定要存在,否则会报错!
procedure CopyDataBase(var Bool: Boolean; str, path, server,
passw: string);
var
Conn:TADOConnection;
query:TADOQuery;
str1:string;
begin
Conn:=TADOConnection.Create(self);
query:=TADOQuery.create(self);
str1:='Provider=SQLOLEDB.1;';
str1:=str1+'PassWord='+passw+';'+'Persist Security Info=True;User ID=sa;';
str1:=str1+'Data Source='+server;
conn.Connectionstring:=str1;
conn.LoginPrompt:=false;
query.Connection:=conn;
if not Bool then begin
try
with query do
begin
Close;
Sql.Clear;
sql.text:=Format('BACKUP DATABASE skjc TO DISK=''%s'' WITH INIT',[path]);//将数据库备份到用户自选的目录去。
execsql;
//还原数据库
Close;
Sql.Clear;
sql.add('restore database skjc from disk='''+trim(path)+'''');
execsql;
close;
end;
except
on exception do
if Conn.InTransaction then
Conn.RollbackTrans;
end;
end
else
begin
try
with query do
begin
close;
sql.Clear;
sql.Add('select ''存在'' where exists (select * from sysdatabases where name =''skjc'')');
open;
if recordcount=0 then begin
//创建数据库
close;
sql.clear;
sql.add('create database skjc');
execsql;
end; //还原数据库
Close;
Sql.Clear;
sql.add('restore database skjc from disk ='''+trim(path)+'''');
execsql;
close;
end;
except
on exception do
if Conn.InTransaction then
Conn.RollbackTrans;
end;
end;
conn.Free;
query.Free;
end;然后调用:
CopyDataBase(bool,'','数据备份文件\skjc',computer,password);
注意:这个目录一定要存在,否则会报错!
backup database mydata TO disk = 'C:\My Documents\myback.bak'