SQL_DMO问题,如何修改还原后的数据库文件路径

ss__328 2004-12-10 04:38:29
源码如下,可以正常还原.但无法指定还原后的数据库文件路径(如下注释所述).请问应该怎么实现呢

function TdbmSQLDMO.RestoreDB(DBName, RestoreFile, DBFile: string): Boolean;
var SQLRestore: _Restore;
begin
Result := True;
try
SQLRestore := coRestore.Create;
except
TdbmCommon.MsgBox('还原对象无法创建,请检查是否安装SQLSERVER或MSDE引擎!');
Result := false;
Exit;
end;

with SQLRestore do
begin
try
Files := RestoreFile;
ReplaceDatabase := true;
Database := DBName;
//****************************
DatabaseFiles := DBFile; //希望能让用户指定还原后的数据库路径,可是这样不起任何作用
//******************************
SQLRestore(FSQLServer)
except
on E: Exception do
begin
TdbmCommon.MsgBox(E.Message);
Result := false;
end;
end;
end;

end;
...全文
183 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ss__328 2005-01-10
  • 打赏
  • 举报
回复
自己找到解决方法了:
SQLRestore.RelocateFiles := '[graspcw_Data],[' + DBFile + '.mdf],[graspcw_Log],' +
'['+DBFile+'.ldf]';
用RelocateFiles完成数据库文件的移动。

相当于下例中的 Move [] To []
RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH NORECOVERY,
MOVE 'MyNwind' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.mdf',
MOVE 'MyNwindLog1' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.ldf'
RESTORE LOG MyNwind
FROM MyNwindLog1
WITH RECOVERY


RelocateFiles中参数必须要成对出现,前面为逻辑文件名,后面为数据地址。
还是感谢大家的参与,散分
Kshape 2005-01-01
  • 打赏
  • 举报
回复
DMO对象连接时并不指定数据库,与权限应该无关阿,而且我也是以SA登录的
=============================
同意

可以直接用语句来还原啊,何必那样
thunderniao 2004-12-30
  • 打赏
  • 举报
回复
直接用SQL命令还原感觉更为灵活呀
500czj 2004-12-27
  • 打赏
  • 举报
回复
修改一下你的登录数据库的权限
ss__328 2004-12-27
  • 打赏
  • 举报
回复
[修改一下你的登录数据库的权限]

DMO对象连接时并不指定数据库,与权限应该无关阿,而且我也是以SA登录的
ss__328 2004-12-24
  • 打赏
  • 举报
回复
to LZGUI
可是企业管理器都能实现这样的功能阿?
zglwxb 2004-12-13
  • 打赏
  • 举报
回复
顶一下
LZGUI 2004-12-13
  • 打赏
  • 举报
回复
还原时,是不能更改数据库路径,你可以通过附加数据库文件的方式 去试试!
ss__328 2004-12-13
  • 打赏
  • 举报
回复
up

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧