我要更新一个数据库,我的做法是:先备份数据库(将数据库独占使用)-->>更新数据库-->>恢复数据库(如果更新失败)-->>最后恢复数据库状态问题是怎么做到数据库独占使用!!!!
知道的,帮一下忙

解决方案 »

  1.   

    USE MASTER
    GO
    sp_dboption '数据库名', 'single user', 'true'
    GO
      

  2.   

    USE model
    GO
    sp_dboption '数据库名', 'single user', 'true'
    GO
      

  3.   

    通过在 model 数据库上执行 sp_dboption,数据库所有者或系统管理员可以设置或关闭所有新建数据库的特定数据库选项。执行 sp_dboption 后,将在为之更改选项的数据库中执行检查点。这将使更改立即生效。
      

  4.   

    /************  备份    恢复  *******  
    backup  database  sys  to  disk='c:\目录\a.bak'  with  init  
    差异:  
    backup  database  sys  to  disk='c:\目录\a.bak'  WITH  DIFFERENTIAL  
     
    --还原    
    use  master  
    RESTORE  DATABASE  TestDB  FROM  DISK  =  'c:\目录\a.bak'
      

  5.   

    谢谢有个问题要解决,当还有其他用户连接数据库时,
    执行sp_dboption '数据库名', 'single user', 'true'是不成功的!我用邹建的 proc p_killspid 杀死所有的进程后就可以执行上句了,可是我的程序的数据库连接也被 kill 掉了,结果死活连不上了。
      

  6.   

    在DELPHI中(转载)procedure TForm1.Button1Click(Sender: TObject);
    var S:String;
    begin
      s:='EXEC sp_attach_db @dbname = N'+char(39)+'通迅录'+char(39)+','+
            '@filename1 = N'+char(39)+ExtractFilePath(paramstr(0))+'通迅录_Data.MDF'+char(39)+
              ','+'@filename2 = N'+char(39)+ExtractFilePath(paramstr(0))+'通迅录_Log.LDF'+char(39);
      ADOCommand.CommandText := s;
      ADOCommand.Execute();
      Messagebox(handle,'数据库安装成功!','提醒',MB_OK+MB_ICONINFORMATION);
    end;详细请看 我的通信录 SQL版例子不错,DELPHI园地有下载!
      

  7.   

    问题已解决,正在调试中...就是类似 yifan600(一剑飘雪) 的想法。
    怪我的想法太死板 :)接分!!!!!!!!!!!!