恢复数据库。(200分)

  • 主题发起人 主题发起人 gps
  • 开始时间 开始时间
G

gps

Unregistered / Unconfirmed
GUEST, unregistred user!
有那位老大知道怎么在恢复数据库,在delphi中用sql语言,越详细越好,最好能有个例子。
我还想问一下,在ado的连接的时候,有那些参数,能否讲的详细些。要是要连接远程的数据库又
怎么联。还望各位多多教导一下,谢谢。
 
恢复什么数据库,不同的数据库是不一样的,

用ado连接sql server吧,门当户对的 ,

设置adoconnection连接sql server 数据库,(
设置connectionstring,打开对话框,选择ms ole db provider for sql server....
安装向导一步一步进行,

在选择adoquery连接到adoconnection,设置adoquery的sql 属性,其他同query的操作
 
我要恢复的sql数据库,版本是7。0的。
比如我现在有个数据库备份dat文件,我现在想用sql来恢复。
 
sql 7.0里面有,自己看看
 
用SQL语句?
不太可能吧?
 
可以的,我是这样做的。不明白给我E_mail:Dreamer_afei@163.com

RESTORE DATABASE 数据库名'+chr(13)+'FROM DISK = '+''''+路径+数据库备份dat文件名+''''+chr(13)+'WITH MOVE '+''''+数据库名_data+''''+' TO '+''''+路径+数据库名.mdf+''''+','+chr(13)+'MOVE '+''''+数据库名_log+''''+' TO '+''''+路径+数据库名_log.ldf+''''
 
to kingfei,
我先试试看,晚些时候再加分了。
 
to kingfei,
兄弟,在恢复的时候有没有什么特别的设置,我用过,sql7。0里那个存储过程。他说数据库在
使用中,不能恢复。你这个要不要设置什么东西啊。
 
你要先删除掉,或者是个不同的名,才可以。
如果已经有相同名字的数据库,那是肯定不行了。
再试试看。
 
如果再不行,我可以给你发个例子。
 
RESTORE DATABASE [数据库名] FROM DISK = N'D:/test.dat' WITH FILE = 1, NOUNLOAD , STATS = 10, RECOVERY
 
to kingfei给我发一个例子好吗?

E-mail:czhohailiuzh@sohu.com
 
snow_white前天给你发过,是否收到?
明白了吗?
 
[:(]
to kingfei.
真是不好意思,我去试里试还是不行,老是报错。你给我发个例子,你看看,行不行。
我的blue_start@163.net.下面是我的代码:

var
path,cmd:string;
begin
if not Mbconfirm('确定要恢复数据库吗?') then exit;
path:=ExtractFilePath(Application.ExeName);

OpenDialog.InitialDir :=path;
OpenDialog.FileName:='data';
OpenDialog.DefaultExt :='dat';

if not OpenDialog.Execute then
exit;

BB_TQ.Enabled :=false;
BB_exit.Enabled :=false;
sb.SimpleText:='正在恢复数据库...';

//Datam.Databa.KeepConnection:=False;
Datam.Databa.Connected:=False;
//将database连接到master数据库上
if datam.Databa.Connected then datam.databa.Close;
//datam.Databa.Params.Values['path']:=DBpath;
datam.Databa.Params.Values['DATABASE NAME']:='hkgl';
datam.Databa.Params.Values['SERVER NAME']:=SrvName;
datam.Databa.Params.Values['USER NAME']:=UserName;
try
datam.databa.Open;
Except
showmessage('数据库连接失败!');
Exit;
end;

with Tquery.Create(self) do
begin
//对数据库确定排它性
{报错,数据库在使用}
//将数据库设置为master来对hkgl做恢复
DatabaseName:='mydb';
try
disconnectiondatabase(DataM);
except
exit;
end;
if disconnectiondatabase(DataM)=False then
Exit;

//置为单用户状态
cmd:='use master '+
' exec sp_dboption hkgl,''single user'',true';
close;
sql.Clear;
sql.Text:=cmd;
try
ExecSQL;
except
mberror('将数据库置为单用户时出错!');
bb_exit.Enabled :=true;
bb_tq.Enabled:=true;
exit;
end;
//断开与数据库的连接
cmd:='exec sp_detach_db ''hkgl'',''true''';
close;
sql.Clear;
sql.Text:=cmd;
try
ExecSQL;
except
mberror('断开数据库连接出错!');
bb_exit.Enabled :=true;
bb_tq.Enabled:=true;
exit;
end;
//创建存储设备
cmd:='EXEC sp_addumpdevice ''disk'', ''RESTORE_1'','''+OpenDialog.FileName+'''';
close;
sql.Clear;
sql.Add(cmd);
try
ExecSQL;
except
mberror('创建数据库恢复设备出错!');
bb_exit.Enabled :=true;
bb_tq.Enabled:=true;
exit
end;
//恢复数据库
cmd:='RESTORE DATABASE '+DbName+' FROM RESTORE_1';
close;
sql.Clear;
sql.Add(cmd);
try
ExecSQL;
except
mberror('数据库恢复出错!');
bb_exit.Enabled :=true;
bb_tq.Enabled:=true;
exit
end;
//删除存储设备
cmd:='sp_dropdevice ''RESTORE_1''';
close;
sql.Clear;
sql.Add(cmd);
try
ExecSQL;
except
mberror('删除数据库恢复设备出错!');
bb_exit.Enabled :=true;
bb_tq.Enabled:=true;
exit
end;
end;

if datam.Databa.Connected then datam.databa.Close;
//datam.Databa.Params.Values['path']:=DBpath;
datam.Databa.Params.Values['DATABASE NAME']:=DbName;
datam.Databa.Params.Values['SERVER NAME']:=SrvName;
datam.Databa.Params.Values['USER NAME']:=UserName;
try
datam.databa.Open;
Except
showmessage('数据库连接失败!');
Exit;
end;

bb_exit.Enabled :=true;
bb_tq.Enabled:=true;
MBinfo('数据库恢复完毕!');

end;

 
好的,你的程序我先看看。
我把我的例子发给你,你看看先。
有什么问题再告诉我。
 
to kingfei
谢谢了。我已经解决了。原来是在恢复的时候没有加replace的参数。你的分我
已经给你加上了。在这里也谢谢各位的捧场。
 
好的,谢谢,给这么多啊!
 以后继续合作。
 
后退
顶部