注;adoquery1 連adoconnection1
adoquery2 連adoconnection2
adoconncetion1 連要備份的數據庫kxytest
adoconnection2 連master數據庫我已將conneted 都設為true了代碼如下﹕procedure TForm1.Button2Click(Sender: TObject);
var str:string;
begin
adoconnection1.connected:=false;
//str:='restore database kxytest from disk ="f:\kxydata.dat" with replace';
adoquery1.Close;
adoquery1.SQL.Clear;
// 'ALTER DATABASE DataBaseName SET OFFLINE WITH ROLLBACK IMMEDIATE'; adoquery2.SQL.Add('alter database kxytest set offline with rollback immediate');
adoquery2.ExecSQL; adoquery1.SQL.Add('restore database kxytest from disk='+#39+'f:\kxydata.dat'+'with replace'+#39);
adoquery1.ExecSQL; adoquery2.SQL.Add('alter database kxytest set online with rollback immediate');
adoquery2.ExecSQL; adoconnection1.Connected:=true;end;運行卻提示﹕
cannot open database requested in login 'kxytest' login fails
adoquery2 連adoconnection2
adoconncetion1 連要備份的數據庫kxytest
adoconnection2 連master數據庫我已將conneted 都設為true了代碼如下﹕procedure TForm1.Button2Click(Sender: TObject);
var str:string;
begin
adoconnection1.connected:=false;
//str:='restore database kxytest from disk ="f:\kxydata.dat" with replace';
adoquery1.Close;
adoquery1.SQL.Clear;
// 'ALTER DATABASE DataBaseName SET OFFLINE WITH ROLLBACK IMMEDIATE'; adoquery2.SQL.Add('alter database kxytest set offline with rollback immediate');
adoquery2.ExecSQL; adoquery1.SQL.Add('restore database kxytest from disk='+#39+'f:\kxydata.dat'+'with replace'+#39);
adoquery1.ExecSQL; adoquery2.SQL.Add('alter database kxytest set online with rollback immediate');
adoquery2.ExecSQL; adoconnection1.Connected:=true;end;運行卻提示﹕
cannot open database requested in login 'kxytest' login fails
for j:= 0 to 9 do
begin
b[i,j]:=tbutton.create(self);
b[i,j].left:=i*100;
b[i,j].top:= j*100;
b[i,j].width:=80;
b[i,j].onclick:=button1.onclick;
end;
1 adoconnection2的连接问题,比如权限不够
2 或者有其他的进程在控制着kxytest
var str:string;
begin
//adoconnection1.connected:=false;//去掉
//str:='restore database kxytest from disk ="f:\kxydata.dat" with replace';
adoquery1.Close;
adoquery1.SQL.Clear;
// 'ALTER DATABASE DataBaseName SET OFFLINE WITH ROLLBACK IMMEDIATE'; adoquery2.SQL.Add('alter database kxytest set offline with rollback immediate');
adoquery2.ExecSQL; adoquery1.SQL.Add('restore database kxytest from disk='+#39+'f:\kxydata.dat'+'with replace'+#39);
adoquery1.ExecSQL; adoquery2.SQL.Add('alter database kxytest set online with rollback immediate');
adoquery2.ExecSQL; //adoconnection1.Connected:=true;// 去掉end;
如果是本机数据库,你直接拷贝就可以了。