上次已经发了一帖但是没有好的答复,最好详细些,谢谢!

解决方案 »

  1.   

    能否用程序控制SQL Server的运行与停止。
      

  2.   

    1 用USE MASTER等语句将你自己的数据库连接转移到你要恢复的数据库以外的数据库上
    2 用SP_WHO或者SELECT * FROM MASTER..SYSPROCESSES察看服务器活动进程,将连接在你要恢复的数据库上的进程用KILL PROCESS杀掉3 scm 实用工具(服务控制管理器)可以创建、修改、启动、停止或暂停在 Microsoft Windows NT® 和 Microsoft Windows® 2000 下运行的任何 Microsoft® SQL Server™ 2000 服务。在 Microsoft Windows 98 下,scm 实用工具可以启动、停止或暂停等效的 SQL Server 应用程序。参见SQL SERVER帮助SCM -ACTION X//X=1启动 2重新启动 6停止 
      

  3.   

    我也是用Delphi做的一个数据库备份与恢复的
    希望能有借鉴作用:
    // 数据备份
    procedure TBackupdata.Button1Click(Sender: TObject);
    var
    bakpath:string;
    begin
    bakpath:=edit1.text ;   //备份的路径
    with query1 do
         begin
         close;
         sql.clear;
         sql.add('exec Backupcar :bakpath');
         params[0].asstring:=bakpath;
         execsql;
         end;
         showmessage('数据备份成功!');
    end;
    //数据恢复、导入
    procedure Trestoredata.BitBtn2Click(Sender: TObject);
    var
    datapath:string;
    begin
    datapath:=edit1.text ;
    with query1 do
         begin
         close;
         sql.clear;
         sql.add('exec restorecar :datapath');
         params[0].asstring:=datapath;
         execsql;
         end;
         showmessage('数据恢复成功!');
    end;以上是基于SQL Server做的一个小程序
    出现你说的那种问题,数据还在使用,说明还有用户连接在这个数据库上
    按以下步骤来进行:
    1 不要将程序连接到你要恢复的数据库上,你可以用use master
    2 你可以用sp_who或者
    select dbname = case
    when dbid = 0 then null
    when dbid <> 0 then db_name(dbid)
    end, loginame from master..sysprocesses where hostname is not null
    group by  dbid,loginame
    等列出现在正在使用的进程/用户
    3 调用kill proccess干掉他们(这样可以确保数据库不在使用中)
    4 然后再进行恢复
      

  4.   

    你还可以用sqlservr 应用程序可以从命令提示符下启动、停止、暂停和继续 Microsoft&reg; SQL Server&#8482; 2000 的实例。语法
    sqlservr [-sinstance_name] [-c] [-dmaster_path] [-f]
        [-eerror_log_path] [-lmaster_log_path] [-m]
        [-n] [-Ttrace#] [-v] [-x] [-g number] [-O] [-y number]
      

  5.   

    你还可以直接调用sqlservr.EXE,参见HELPsqlservr 应用程序可以从命令提示符下启动、停止、暂停和继续 Microsoft&reg; SQL Server&#8482; 2000 的实例。