你做了映射磁盘不是有个驱动器名么,用驱动器号,如果你的映射磁盘名为z backup database gxwit to disk='z:\11111.bak' 数据源连接master,查询出spID后逐项kill 在delphi中这么做: //数据源连接master,不多说
var sStr : string; begin sStr := 'declare @s varchar(1000)' + ' select @s=isnull(@s,'''') + '' Kill '' +rtrim(spID) + '';'' + from master..sysprocesses where dbid=db_id (''test'')' + 'exec(@s);'; sStr := sStr + 'exec(''backup database gxwit to disk=''''''''z:\11111.bak'''''''')'; //这儿的'记不清是几个了,可以试下 with adoquery1 do begin close; sql.text := sStr; execSql; end; end;
9楼的 simonhehe 我按照你的做了 但是弹出错误: from 附近有语法错误
alter database Demo set offline with rollback immediate restore database Demo from disk='E:\1.bak' //还原语句 alter database Demo set online with rollback immediate给大家分享下终于找到这个办法解决了,可以安心睡觉了.分给simonhehe 大虾不过还是希望simonhehe 能指点下 9 楼 的方法与怎么修改那错误
use master --这样避免正在使用要还原的库 godeclare cur cursor for select spid from sysprocesses where dbid=db_id('Demo') open cur declare @spid intdeclare @str varchar(100)fetch next from cur into @spid while @@fetch_status=0 begin set @str=ltrim(@spid) exec ('kill '+@str) fetch next from cur into @spid end close cur deallocate curgorestore database Demo from disk='d:\111.bak' with replace
2 还原数据库
--处理顺序按下面的方式进行,其中text为你要还原的数据库名;restore ...为你的还原语句declare @s varchar(1000)
select @s=isnull(@s,'')+' Kill ' +rtrim(spID) + ';' + from master..sysprocesses where dbid=db_id('test')
exec(@s)restore ...
go
--kill 是先执行 这个吗?这样对数据库会有什么影响吗?因为是服务器开发,不敢先对服务器操作还有个问题我对服务器做备份到本机,但是我在本机设置了个共享文件夹,服务器还是访问不了本机的?需要设置什么东西多?感谢指导.
\\192.168.1.7\qnj\ 这个这样可以访问,但上面的还原语句执行不了提示错误:无法打开备份文件\\192.168.1.7\qnj\11111.bak'
问题1.做个数据库还原的功能
提示错误:因为数据库正在使用,所以未能获得对数据库的排它访问权。
怎么解决这个问题? KILL的具体用法 我用SQL语句KILL 53 还是提示无这进程问题2.对服务器做备份到本机,但是我在本机设置了个共享文件夹,服务器还是访问不了本机的?
需要设置什么多?大家帮帮忙
backup database gxwit to disk='z:\11111.bak'
数据源连接master,查询出spID后逐项kill
在delphi中这么做:
//数据源连接master,不多说
var
sStr : string;
begin
sStr := 'declare @s varchar(1000)' +
' select @s=isnull(@s,'''') + '' Kill '' +rtrim(spID) + '';'' + from master..sysprocesses where dbid=db_id (''test'')' +
'exec(@s);';
sStr := sStr + 'exec(''backup database gxwit to disk=''''''''z:\11111.bak'''''''')'; //这儿的'记不清是几个了,可以试下
with adoquery1 do
begin
close;
sql.text := sStr;
execSql;
end;
end;
我按照你的做了
但是弹出错误: from 附近有语法错误
alter database Demo set offline with rollback immediate
restore database Demo from disk='E:\1.bak' //还原语句
alter database Demo set online with rollback immediate给大家分享下终于找到这个办法解决了,可以安心睡觉了.分给simonhehe 大虾不过还是希望simonhehe 能指点下 9 楼 的方法与怎么修改那错误
use master --这样避免正在使用要还原的库
godeclare cur cursor for
select spid from sysprocesses where dbid=db_id('Demo')
open cur
declare @spid intdeclare @str varchar(100)fetch next from cur into @spid
while @@fetch_status=0
begin
set @str=ltrim(@spid)
exec ('kill '+@str)
fetch next from cur into @spid
end
close cur
deallocate curgorestore database Demo from disk='d:\111.bak' with replace