“数据库还原时出现的因为数据库正在使用“的解决方案(备份数据库,血粼粼的教训) ....

由于要还原数据库,但是因为数据库始终是在访问状态(不知道这个说法正不正确),老是弹出,不是独享资源什么的。

在网上查了查,想要还原数据库必须断开连接。下面是语句

 

View Code
 1 这时需要在还原数据库前先杀死正在使用数据库得线程.
 2 
 3 1、首先定位到master 数据库
 4        2、运行如下语句
 5 
 6 如以下杀死正在使用'jcjq'数据库的线程:
 7 
 8 declare @dbname varchar(20)
 9 
10 set @dbname='jcjq'
11 
12 declare @sql nvarchar(500)
13 
14 declare @spid int--SPID 值是当用户进行连接时指派给该连接的一个唯一的整数
15 
16 set @sql='declare getspid cursor for 
17 
18 select spid from sysprocesses where dbid=db_id('''+@dbname+''')'
19 
20 exec (@sql)
21 
22 open getspid
23 
24 fetch next from getspid into @spid
25 
26 while @@fetch_status<>-1--如果FETCH 语句没有执行失败或此行不在结果集中。
27 
28 begin
29 
30 exec('kill '+@spid)--终止正常连接
31 
32 fetch next from getspid into @spid
33 
34 end
35 
36 close getspid
37 
38 deallocate getspid 


但是数据库还原时,又出现:

尚未备份数据库 的日志尾部。如果该日志包含您不希望丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份该日志。请使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句来只覆盖该日志的内容。 来源:http://www.greensoftcode.net/  

提示此错误的原因是:可能是你的数据库服务器中存在同名数据库!

方法1:

----还原数据库成功的语句

View Code
1 USE master(一定要把需要还原的数据库的任何连接都要关闭掉,否则还原不上,所以用master)
2 GO
3 
4 RESTORE DATABASE A120_20120523 FROM DISK = 'G:\DataBAse备份\A120_2012051823.bak'
5 WITH REPLACE
6 GO

 

方法二:

View Code
1 RESTORE DATABASE  [aft_shop] FROM <!-备份文件地址--> DISK = N'G:\备份文件'  WITH  FILE = 1, MOVE N'aft_shop' TO  N'G:\aft_shop.mdf',  MOVE N'aft_shop_log' TO N'G:\\aft_shop.ldf',  NOUNLOAD,REPLACE,  STATS = 10,  PASSWORD = 'xxxx' 

所以 在WITH 后加入 REPLACE 或 STOPAT  就可以还原啦 !但同名数据库可能被覆盖!

 

PASSWORD 也可以不加,写成下面这样:

View Code
 1 ---还原成功的语句
 2 RESTORE DATABASE  [A120_20120523] 
 3 
 4 ---数据库备份文件地址
 5 FROM  DISK = N'G:\DataBAse备份\A120_2012051823.bak'  
 6 WITH  FILE = 1, 
 7 
 8 --逻辑名称, 数据库还原后移动到的位置
 9 MOVE N'kuiper_WH_N_Data'TO  N'G:\数据库安装\A120_20120523.mdf', 
10 
11 --逻辑名称, 数据库日志还原后移动到的位置
12 MOVE N'Kuiper_WH_N_Log'TO N'G:\数据库安装\A120_20120523.ldf',  
13 NOUNLOAD,REPLACE,  STATS = 10--,  PASSWORD = 'xxx' 


---查看数据库中的文件信息,可以查看逻辑名称

View Code
1 ---查看数据库中的文件信息,可以查看逻辑名称
2 RESTORE FILELISTONLY FROM  DISK = 'G:\DataBAse备份\A120_2012051823.bak'
3 上面红色的部分是数据库的逻辑名称(LogicalName部分的内容)

 

转载于:https://www.cnblogs.com/muyue/archive/2012/11/22/2782760.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值