我用ADoConnection连接MASTER数据库,对我自己的DB数据库执行恢复操作,我知道需要用alter database '+DB+' set single_user with rollback immediate RESTORE DATABASE '+DB+' FROM DISK = '''来对数据库进行排他访问,才能执行成功,然后再设置alter database '+DB+' set multi_user,以前屡试不爽,都已经定型了!应该没有任何问题,但是在一台安装个人版MS SQL2000的数据库时执行失败,还是提示无法恢复数据库,必须对数据库进行排他访问,那么这种情况只能是有进程在占用我的数据库,但是我从任务管理器找了好长时间,确定没有任何进程在占用啊!谁知道这是什么情况,应该如何解决?另外我用企业管理器的还原数据库功能可以成功恢复数据库!
急,100分求解!
急,100分求解!
解决方案 »
- frReport1的标题如何改写呀
- dbgridEh过滤换数据集
- 加急!Delphi中Indy控件关于ReadBuffer和阻塞的问题。
- 应聘一份DELPHI的工作,大家批批我的求职简历
- 请高手做答,考验能力的问题
- 一个简单问题,大家帮忙!
- 如何在我自制的表格控件里加入滚动条,我的控件是从TCustomControl继承下来的?
- 如何在windows的工具栏显示多个窗体?
- 谁知道如何实现拖动button,就能拖动整个form移动?
- delphi中是否有类似vb中Driverlist之类的控件?
- 关于读取二进制数据的问题~`迷惘中 100分送上,问题解决再送100
- 控件StringGrid的用法
/*为了对目标数据库进行独占操作, 你可以使用以下存储过程来关闭所有用户连接*/
CREATE PROCEDURE MYkillspid (@dbname varchar(20) ) AS SET NOCOUNT ON begin
declare @sql nvarchar(500), @temp varchar(1000)
declare @spid int
set @sql='declare getspid cursor for select spid from sysprocesses
where dbid=db_id('''+@dbname+''')'
exec (@sql)
open getspid
fetch next from getspid into @spid
while @@fetch_status <> -1
begin
set @temp='kill '+rtrim(@spid)
exec(@temp)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end