利用存储过程实现,将文件的路径及文件名作为参数传递给存储过程来实现。
在存储过程中调用命令:
restore database DatabaseName from disk='d:\BackupDB.mdf'
而DatabaseName 、'd:\BackupDB.mdf'可用参数传进来。

解决方案 »

  1.   

    DatabaseFiles := DBFile;   //希望能让用户指定还原后的数据库路径,可是这样不起任何作用是不是你的DBFile的路径的不对,建议你单步调试一下,看一看DBFile的值
      

  2.   

    To lzp_lrp(lzp) :
      这肯定是对的To powerxsydj(夜枫):
       项目要求实现对纯DMO对象的封装,能不用SQL语句尽量不用
    SQLSERVER企业管理器中都可实现对还原数据库路径的修改,没有理由DMO对象不提供啊?
      

  3.   

    自己找到解决方法了:
    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中参数必须要成对出现,前面为逻辑文件名,后面为数据地址。
    还是感谢大家的参与,散分