sql server2012数据库 提示正在还原 怎么停止

sql server2012数据库 提示正在还原 怎么停止,第1张

输入用户名和密码,先登录数据库

找到无法还原的数据库,右键-属性

数据库属性页面,点击左侧的‘选项’

点开状态,找到限制访问,修改选择值,把原来的multi_user,改成single_user,点击确定,保存修改

修改保存后,刷新数据库列表,可以看到该数据库后面已经显示‘单个用户’

这个时候,在重新还原数据库,应该就可以成功了

同时我们提供以下方法来终止此恢复过程,但请用户注意这些 *** 作将带来数据的不一致性。必要时,希望用户用完整、可靠的数据库备份恢复此数据库。

1>sp_configure

"allow

updates",

12>go1>begintran2>go1>use

master

2>go1>update

sysdatabases

2>set

status

=-327683>where

name="pubs2"

4>go

如果得到(1

row

affected),则1>commit2>go1>rollback2>go

(3)这时重新启动sql

server,

使用bcp工具将该数据库(本例中为pubs2)内的全部数据导出备份(这一步很重要!

1>rollback2>go1>sp_configure

"allow

updates"

,02>go5)

重新启动server

(6)

如果你的数据库原来有dboption(例如"select

into","trunc

log

on

chkpt"等),

你需要重新设置这些option..

(7)

当数据库已经恢复可使用状态后,运行dbcc命令检查数据库的一致性(参照"如何检查数据库中数据一致性"文章)

(8)

后备用户数据库

例如:

1>dumpdatabase

pubs2

to

"/usr/sybase/pubs2.dup"

2>go

点此发表你的看法>>【已有位网友发表了看法】

看你的脚本的意思是:

在master数据库建存储过程:killspid,

如果你的目的也是这样,那么执行执行还原的sql语句应该是这样:

use masrer

go

exec killspid 'dbname'--dbname改成要还原的数据库名称

go

--在这里写RESTORE 语句还原你的数据库

go

如果你的意图不是上面的,而是在要还原的数据上面创建killspid存储过程,估计你将无完达到你的目的,因为你要执行killspid时,执行killspid的进程也在你要kill的进程列表里面,就出现了你所说的情况:不能用kill来终结自己的进程;

建议直接用sql语句而不是存储过程:

use master--须使用use master

go

declare @dbname nvarchar(500)

set @dbname ='dbname' --dbname改成要还原的数据库名称

declare @spid nvarchar(20)

declare #tb cursor for

select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname)

open #tb

fetch next from #tb into @spid

while @@fetch_status=0

begin

exec('kill '+@spid)

fetch next from #tb into @spid

end

close #tb

deallocate #tb

go


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9429437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存