我想问下,怎么判断数据库中是否已经有了我要备份的设备,当没有的时候执行创建设备操作,有的时候不执行!
还有就是在还原数据库的时候总是提示:因为数据库正在使用,所以未能获得对数据库的排它访问权。
下边是我的存储过程的代码,给大家帮看下:
ALTER PROCEDURE dbo.get_database
@kind varchar(7),--输入信息
@path varchar(250),--路径+备份文件
@base_name varchar(50),--数据库名称
@back_name varchar(50),--数据库设备名
@returnkey int output--输出信息
AS
DBCC CHECKDB(@base_name) 
exec ('use master')          --创建设备--
EXEC sp_addumpdevice 'disk', @back_name, @path
--备份数据库--
IF  @kind='backup'  
   BEGIN  
      
       BACKUP  DATABASE  @base_name  TO @back_name WITH INIT,SKIP
            
       SELECT  @returnkey='1'  
   END  
   --还原数据库
 IF  @kind='restore'      
   BEGIN  
       RESTORE  DATABASE  @base_name FROM @back_name  
       SELECT  @returnkey='0'  
   END 
RETURN 

解决方案 »

  1.   

    TO:xiaowangtian1117(笑望天1117) 
    判断有没有文件的代码怎么写?谢谢
      

  2.   

    在还原数据库的时候总是提示:因为数据库正在使用,所以未能获得对数据库的排它访问权。
    怎么解决这个问题呢?有经验的XDJM们帮个忙解决下
      

  3.   

    在还原数据库的时候总是提示:因为数据库正在使用,所以未能获得对数据库的排它访问权。
    怎么解决这个问题呢?有经验的XDJM们帮个忙解决下等待解决中
      

  4.   

    还原数据库必须把让用户停用才能行。
    errorMessage=null;
    string strSql="Alter Database ["+System_Biz.DataBaseName+"] Set Offline with Rollback immediate; ";
    strSql=strSql+"RESTORE DATABASE ["+System_Biz.DataBaseName+"] FROM DISK = '"+System_Biz.RegainPath+"';";
    strSql=strSql+"Alter Database ["+System_Biz.DataBaseName+"] Set OnLine With rollback Immediate";
    string strconnection="server=localhost;User ID=sa;password="+System_Biz.DataBasePassword+";database=master;";
    try 
    {
    SqlConnection cnn=new SqlConnection(strconnection);
    SqlCommand cmd=new SqlCommand(strSql,cnn);
    cnn.Open();
    cmd.ExecuteNonQuery();
    cnn.Close();
    }
    catch(SqlException se) 
    {
    errorMessage = se.Message;
    return false;
    }
    return true;
    在程序中写