1 你检查一下库 dbcc checkdb
2 你把库设为 single user 和dbo user only 试

解决方案 »

  1.   

    你在进行数据库恢复操作的时候,不能有用户使用目标数据库,否则你将无法恢复数据库!你的程序可以连接到master库中去恢复其他的用户库
      

  2.   

    其实你自己在用啊,
    你先停掉SQLServer,然后再启动用Enterprise恢复数据库的话应该是没问题的,
    如果你想通过你的程序这个不太可行!你可以用bin下的一个执行isql.exe(记不太清是不是这个名)
    运行isql.exe可以看到使用帮助,如果用要恢复数据,可以用你的程序调用它执行T-sql语句!当然一样要保正SQLServer没有其它用在用(可以先停掉再启动实现,停止启动SQLServer服务这个用Delphi可以实现,调用外部程序Shellexecute...)然后restore数据库
      

  3.   

    使用 database 控件连接数据库,在恢复时先把connect 置为false 
    在执行恢复就行了.当然程序中使用数据库时必须都用该database 设
    的别名.
      

  4.   

    可能是数据库错误,用dbcc检查一下吧
      

  5.   

    这情况我前几天也碰到了,重启是没有用的。我后来在restore语句前加了句use master就ok了,测试很多次都成功了。保证只有下面这条语句执行:
    sql:
    use master;   //<<<<<<<-------------
    restore.....
      

  6.   

    在前面加了个use master,恢复时不会提示出错,但事实上数据并没有恢复过来,这是为什么?
      

  7.   

    我也想知道
    我知道在sql-server里用语句的恢复,但在delphi中实现不了
      

  8.   

    dana(dana),的确如此
    不过,你可以做个实验。在一台机器上,先执行backup,将用户库备份为a.db,然后你把数据库中表的内容删掉,再执行restore,你看恢复没恢复?我这是成功了。
    我上次在一台机器上backup 成1.db,然后在另外一台机器上restore,没有得到想要的结果。然而,我在第二台机器上用“企业管理器”的还原数据库功能,得到了想要的结果。
    原因我也不是很清楚,好像是因为两台机器上的系统库不同造成的,我只是猜的,还请高手们指教。
      

  9.   

    dana(dana),你现在的问题多了耶,是不是得多发点分啊