我用sqldmo写了一个数据库恢复程序,执行的时候报错:
[Microsoft][ODBC SQL Server Driver][SQL Server]因为数据库正在使用,所以未能获得对数据库的排它访问权。 [Microsoft][ODBC SQL Server Driver][SQL Server]RESTORE DATABASE 操作异常终止。 
我的程序是这样写的
SQLDMO.SQLServer SQLServer=new SQLDMO.SQLServerClass();
SQLServer.LoginSecure=false;
SQLServer.Connect(Server,Sqlname,Sqlpassword);SQLDMO.Restore SQLRestore=new SQLDMO.RestoreClass();
SQLRestore.Database=DataBase;
SQLRestore.Files=backpath+"办公系统数据库备份.bak";
SQLRestore.FileNumber=System.Int16.Parse(num.Trim());
SQLRestore.ReplaceDatabase=true;
SQLRestore.SQLRestore(SQLServer);
SQLServer.DisConnect();好像是在恢复前要先锁定数据库,sqldmo如何锁定数据库?

解决方案 »

  1.   

    还原前先杀死数据库进程,给你一个存储过程,参数 数据库名CREATE PROCEDURE  killspid (@dbname varchar(60)) AS
    declare @spid varchar(20)
    declare #spid cursor for
    select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname)
    open #spid
    fetch next from #spid into @spid
    while @@fetch_status=0
    begin  
    exec('kill '+@spid)
    fetch next from #spid into @spid
    end  
    close #spid
    deallocate #spidGO