各位高手们,帮帮忙啊!小弟有一个SQL Server2000的备份和还原,但只能操作本地机上的数据库而实现不了远程数据库的备份和还原! ( 积分: 50 )

  • 主题发起人 主题发起人 shilixiao
  • 开始时间 开始时间
S

shilixiao

Unregistered / Unconfirmed
GUEST, unregistred user!
请高手们指点指点小弟,先谢谢啦!程序代码如下:
//备份数据库
procedure TBackup.Button1Click(Sender: TObject);
var
BackupFile : string;
DB : string;
begin
DB := 'JYKJ_db';
if SaveDialog.Execute then
if trim(SaveDialog.FileName) <> '' then
if DM.ADOConnDB.Connected = true then begin
DM.ADOConnDB.Connected := false;
BackupFile := SaveDialog.FileName + '.bak';
try
DM.ADOCommBak.CommandText := 'use Master';
DM.ADOCommBak.Execute;
DM.ADOCommBak.CommandText := 'execute sp_helpdevice';
DM.ADOCommBak.Execute;
DM.ADOCommBak.CommandText := 'backup database ' + DB + ' to disk=''' +BackupFile+ ''' with init';
DM.ADOCommBak.Execute;
DM.ADOCommBak.CommandText := 'Use ' + DB ;
DM.ADOCommBak.Execute;
MessageBox(getactivewindow(),'成功备份数据库!','提示!' ,MB_OK + MB_ICONINFORMATION);
if DM.ADOConnDB.Connected = false then
DM.ADOConnDB.Connected := true;
except
MessageBox(getactivewindow(),'备份数据库失败!','错误!' ,MB_OK + MB_ICONERROR);
end;
end;
end;

//还原数据库
procedure TBackup.Button3Click(Sender: TObject);
var
RestoreFile : string;
DB : string;
begin
DB := 'JYKJ_db';
if OpenDialog.Execute then
if trim(OpenDialog.FileName) <> '' then
if DM.ADOConnDB.Connected = true then begin
DM.ADOConnDB.Connected := false;
RestoreFile := OpenDialog.FileName;
try
DM.ADOCommBak.CommandText := 'use Master';
DM.ADOCommBak.Execute;
DM.ADOCommBak.CommandText := 'restore database ' + DB + ' from disk=''' +RestoreFile+ ''' with replace';
DM.ADOCommBak.Execute;
DM.ADOCommBak.CommandText := 'use ' + DB ;
DM.ADOCommBak.Execute;
MessageBox(getactivewindow(),'成功恢复备份!','提示!' ,MB_OK + MB_ICONINFORMATION);
if MessageBox(GetActiveWindow(),'恢复成功后必须退出系统!','信息!',MB_OKCANCEL + MB_ICONINFORMATION) = IDOK then
Application.Terminate//还原成功后则退出系统
else
if DM.ADOConnDB.Connected = false then
DM.ADOConnDB.Connected := true;
except
MessageBox(getactivewindow(),'恢复备份失败!','错误!' ,MB_OK + MB_ICONERROR);
end;
end;
end;
 
请高手们指点指点小弟,先谢谢啦!程序代码如下:
//备份数据库
procedure TBackup.Button1Click(Sender: TObject);
var
BackupFile : string;
DB : string;
begin
DB := 'JYKJ_db';
if SaveDialog.Execute then
if trim(SaveDialog.FileName) <> '' then
if DM.ADOConnDB.Connected = true then begin
DM.ADOConnDB.Connected := false;
BackupFile := SaveDialog.FileName + '.bak';
try
DM.ADOCommBak.CommandText := 'use Master';
DM.ADOCommBak.Execute;
DM.ADOCommBak.CommandText := 'execute sp_helpdevice';
DM.ADOCommBak.Execute;
DM.ADOCommBak.CommandText := 'backup database ' + DB + ' to disk=''' +BackupFile+ ''' with init';
DM.ADOCommBak.Execute;
DM.ADOCommBak.CommandText := 'Use ' + DB ;
DM.ADOCommBak.Execute;
MessageBox(getactivewindow(),'成功备份数据库!','提示!' ,MB_OK + MB_ICONINFORMATION);
if DM.ADOConnDB.Connected = false then
DM.ADOConnDB.Connected := true;
except
MessageBox(getactivewindow(),'备份数据库失败!','错误!' ,MB_OK + MB_ICONERROR);
end;
end;
end;

//还原数据库
procedure TBackup.Button3Click(Sender: TObject);
var
RestoreFile : string;
DB : string;
begin
DB := 'JYKJ_db';
if OpenDialog.Execute then
if trim(OpenDialog.FileName) <> '' then
if DM.ADOConnDB.Connected = true then begin
DM.ADOConnDB.Connected := false;
RestoreFile := OpenDialog.FileName;
try
DM.ADOCommBak.CommandText := 'use Master';
DM.ADOCommBak.Execute;
DM.ADOCommBak.CommandText := 'restore database ' + DB + ' from disk=''' +RestoreFile+ ''' with replace';
DM.ADOCommBak.Execute;
DM.ADOCommBak.CommandText := 'use ' + DB ;
DM.ADOCommBak.Execute;
MessageBox(getactivewindow(),'成功恢复备份!','提示!' ,MB_OK + MB_ICONINFORMATION);
if MessageBox(GetActiveWindow(),'恢复成功后必须退出系统!','信息!',MB_OKCANCEL + MB_ICONINFORMATION) = IDOK then
Application.Terminate//还原成功后则退出系统
else
if DM.ADOConnDB.Connected = false then
DM.ADOConnDB.Connected := true;
except
MessageBox(getactivewindow(),'恢复备份失败!','错误!' ,MB_OK + MB_ICONERROR);
end;
end;
end;
 
真的没有高手了吗?自己顶一下!
 
帮顶一下
 
你这种备份方式只能在本地进行,就是有高手估计也难以帮你。
 
因为你的OpenDialog最终返回的是本地路径,而远程服务器不一定有这样的路径,故备份/恢复就可能不成功了;
企业管理器有一种选择远程服务器的路径的对话框,只是不知它是怎么实现的(没仔细研究过)。
 
很急啊!帮帮心吗?各位高手
 
可以在服務端建立一FTP 服務.執行你的程序備份到服務端的本地磁盤.
然后在遠程通過ftp登錄下載所備份的數據庫.
 
这样不是很好啊!很麻烦啊!
有没有其他好办法啊!
 
SQL只能在本地保存备份吧,你通过FTP在传过来不可以吗?
 
大富翁真是没有高手啦!
没人能够给一点代码分析分析!
 
后退
顶部