同一数据库在两台机上不同路径的备份还原

原创 2015年07月09日 16:15:33

在做数据库复制或BI商业分析时,我们经常遇到这样的问题,同一数据库在A服务器上是一个路径(如:D:\database),在B服务器上的路径不同(D:\sqlserver data)。

如果用手工在企业管理器里操作,那么在还原时,我们要重新选择还原路径与实际路径相符,才可以还原成功,否则还原失败。

那么,如果直接用命令完成还原,应该什么做呢?步骤如下:

一、先把当前活动进程杀掉

二、检查文件是否存在

三、还原时,逻辑文件名对应到物理文件名真实路径

declare @dbname varchar(20) , @sql nvarchar(500)  
declare @spid int 
set @dbname='ORDER_DB' 
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  
	exec('kill '+@spid) 
	fetch next from getspid into @spid 
end  
close getspid 
deallocate getspid


DECLARE @param4 int
EXECUTE master..XP_FileExist 'D:\Backup\Data\Orders_DB.bak', @param4 OUTPUT 
IF @param4 <> 0
BEGIN
	ALTER DATABASE ORDER_DB SET SINGLE_USER
	RESTORE DATABASE ORDER_DB FROM DISK='D:\Backuup\Data\Orders_DB.bak' 
		with move 'ORDERS_DB' to 'D:\sqlserver data\ORDER_DB.mdf',
		move 'ORDERS_DB_log' to 'D:\sqlserver data\ORDER_DB_log.ldf'
	ALTER DATABASE ORDER_DB SET MULTI_USER
END


这样做的好处是可以用JOB自动完成,不需要手工操作。


附加:

1. 如果数据在还原过程中遇到问题,而且显示“正在还原”,久久不完成,最好不要强制停止,或停掉服务,应该用下面命令终止还原

RESTORE DATABASE FocalPrice_db with RECOVERY

不能用NORECOVERY 。

RECOVERY 和NORECOVERY 的区别在于,操作完成后RECOVERY 可以直接使用,而NORECOVERY 不能直接使用.



2. 如果有还原数据库时遇到这样的错误:
尚未备份数据库 "ORDER_DB" 的日志尾部。如果该日志包含您不希望丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份该日志。请使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句来只覆盖该日志的内容。
RESTORE DATABASE 正在异常终止。

那么把还原数据库语句改为:
RESTORE DATABASE ORDER_DB FROM DISK='D:\BakSync\Data\Orders_DB.bak'
 with file=1, move 'ORDERS_DB' to 'D:\server sql data\ORDER_DB.mdf',
 move 'ORDERS_DB_log' to 'D:\server sql data\ORDER_DB_log.ldf',NOUNLOAD,REPLACE,STATS=10




使用Runtime.getRuntime().exec()的方法调用本地mysqldump.exe备份还原数据库(路径中含有空格和数字)的方法

这个问题花费我两天时间,上网搜中文的资料大都换另一种方式解决的。说是在java中cmd不支持重定向,采用的另一种方式是得到Runtime.getRuntime().exec()的输入流,然后写到一个文...
  • CROSSCI
  • CROSSCI
  • 2012年07月20日 18:41
  • 4345

SQL Server 2008还原数据库时出现“备份集中的数据库备份与现有的数据库不同”的解决方法

引言         现在在做项目,由于每个人是分模块的,所以大家的测试数据都不同步,导致好多时候会因为别人填的数据不同而调半天的错。所以我还是自己还原一个数据库,自己填自己的数据吧。    报错...

备份还原计算机上的驱动

  • 2009年03月28日 12:10
  • 972KB
  • 下载

db2不同路径还原问题 SQLSTATE=57019 SQL1051N

db2 => db2stop force DB20000I  DB2STOP命令成功完成。 db2 => db2start DB20000I  DB2START命令成功完成。 db2 => b...
  • hety119
  • hety119
  • 2014年07月18日 18:42
  • 2578

LabVIEW中在编辑环境和运行环境下文件保存的路径问题以及发生不同界面文件保存在同一文档中发生覆盖时的处理方法

当保存文本文件选择了当前VI路径时,若在编辑环境下,仅需要一个拆分路径,文件保存在当前vi文件同级目录中的a.txt文档中。 编辑环境下的文件保存 当将上面的界面发布成exe应用程序后,该...

5.非关系型数据库(Nosql)之mongodb:创建集合,备份与导入导出, 数据还原,导入导出

1 固定集合 固定集合值得是事先创建而且大小固定的集合 2 固定集合的特征:固定集合很像环形队列,如果空间不足,最早文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期...

如何将sql2000备份数据库还原到sql2008中

 今天安装了sql server2008,于是乎想将自己原来在2000下备份的数据还原一番,很自然想到了2000下还原数据库的方法:     1、先新建一个数据库,有些同学说这个新建的数据库在...

linux下的DB2数据库表结构和数据分开的备份,还原到windows下,环境如下

DB2跨系统迁移 生产服务器A:操作系统:linux    内存:64G  这是生产机的环境,配置比较好。 测试服务器B: 操作系统:windows  内存:6G  报错:db2look utilit...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:同一数据库在两台机上不同路径的备份还原
举报原因:
原因补充:

(最多只允许输入30个字)