restore database bomo from Disk='F:\bomo.bak' with replace , Move 'bomosystem_Data' to 'bomo_Data.mdf' , move 'bomosystem_Log' to 'bomo_Log.ldf' 那就是数据库在使用中了,肯定不行嘛,先把要使用该数据库的程序停掉再Restore试试
try: --kill所有会话 use master goDeclare @tblConnectedUsers Table (SPID int) Declare @vcSQLText varchar(200),@iSPID int,@dbName varchar(20) --数据库名set @dbName='数据库名'Insert into @tblConnectedUsers Select p.spid from master.dbo.sysprocesses p (nolock) join master..sysdatabases d (nolock) on p.dbid = d.dbid Where d.[name] = @dbNameWhile 1 = 1 BeginSelect top 1 @iSPID = SPID From @tblConnectedUsers Where SPID > IsNull(@iSPID, 0) order by SPID ascIf @@RowCount = 0 BreakSet @vcSQLText = 'Kill ' + Convert(varchar(10), @iSPID) Exec( @vcSQLText ) End
断开连接 use master declare hcforeach cursor global for select 'kill '+rtrim(spid) from master.dbo.sysprocesses where dbid=db_id('数据库') exec sp_msforeach_worker '?'
Move 'bomosystem_Data' to 'bomo_Data.mdf' ,
move 'bomosystem_Log' to 'bomo_Log.ldf'
那就是数据库在使用中了,肯定不行嘛,先把要使用该数据库的程序停掉再Restore试试
在Restore前先KILL?
另外,偶不是用小日的东东,可能是语言环境没设置好
--kill所有会话
use master
goDeclare @tblConnectedUsers Table (SPID int)
Declare @vcSQLText varchar(200),@iSPID int,@dbName varchar(20) --数据库名set @dbName='数据库名'Insert into @tblConnectedUsers
Select p.spid
from master.dbo.sysprocesses p (nolock)
join master..sysdatabases d (nolock) on p.dbid = d.dbid
Where d.[name] = @dbNameWhile 1 = 1
BeginSelect top 1 @iSPID = SPID
From @tblConnectedUsers
Where SPID > IsNull(@iSPID, 0)
order by SPID ascIf @@RowCount = 0
BreakSet @vcSQLText = 'Kill ' + Convert(varchar(10), @iSPID)
Exec( @vcSQLText )
End
use master
declare hcforeach cursor global for select 'kill '+rtrim(spid) from master.dbo.sysprocesses where dbid=db_id('数据库') exec sp_msforeach_worker '?'