备份集中的数据库备份与现有的 'xiangyi' 数据库不同。 RESTORE DATABASE 正在异常终止。 (Microsoft SQL Server,错误: 3154)

恢复数据的背景:sql 数据库迁移,拿到源文件备份后,到新的机器上面去恢复,而且不能恢复在C盘

新机器上面,新建数据库xiangyi

在master库上面执行:

RESTORE DATABASE xiangyi
FROM DISK = 'D:\Tools\kingdee_bak\ais20190925150901_翔翼sql\ais20190925150901_翔翼sql.bak'
with replace,
MOVE 'xiangyi' TO 'D:\xiangyi_data\xiangyi.mdf',
MOVE 'xiangyi_log' TO 'D:\xiangyi_data\xiangyi_log.ldf'

 

来到客户端 sql  server management studio 对应的 xiangyi 库,右键 -->恢复-->数据库

选择 源文件D:\Tools\kingdee_bak\ais20190925150901_翔翼sql\ais20190925150901_翔翼sql.bak,设置恢复到  

D:\xiangyi_data\xiangyi.mdf     

D:\xiangyi_data\xiangyi_log.ldf

再勾选“”“覆盖恢复”,就可以顺利的恢复了。

 ==========================================================================================

 

因为数据库正在使用,所以无法获得对数据库的独占访问权,RESTORE DATABASE 正在异常终止。

RESTORE DATABASE xiangyi FROM DISK = 'C:\kingdee_bak\ais20190925150901_翔翼sql\ais20190925150901_翔翼sql.bak'
WITH REPLACE ,
MOVE 'xiangyi' TO 'C:\xiangyi_data\C:\xiangyi.mdf',
MOVE 'xiangyi_log' TO 'C:\xiangyi_data\C:\xiangyi_log.ldf';
------------------------------------------------------------------------------

declare @dbname varchar(20)
set @dbname='xiangyi' --这个地方录入需要操作的数据库名
declare @sql nvarchar(500)
declare @spid int--SPID --值是当用户进行连接时指派给该连接的一个唯一的整数
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 --如果FETCH 语句没有执行失败或此行不在结果集中。
begin
exec('kill '+@spid) --终止正常连接
fetch next from getspid into @spid
end
close getspid
deallocate getspid

-------------------------------------------------------------------------------
RESTORE DATABASE ais20190925150901 FROM DISK = 'E:\custins70757559_hins26572734_2025091606582868165438\ais20190925150901.bak'
WITH REPLACE ,
MOVE 'ais20190925150901' TO 'E:\SQLDATA\DATA\ais20190925150901.mdf',
MOVE 'ais20190925150901_log' TO 'E:\SQLDATA\DATA\ais20190925150901_log.ldf';

posted @ 2025-09-10 16:20  walkersss  阅读(19)  评论(0)    收藏  举报