求教将一个数据库A的备份导入到另外一个数据库B中,如何用sql语句实现?

时间:2022-12-11 15:02:49
不考虑增量,只是整个数据库的备份
在sqlserver management studio中,手动操作是先将目标数据库B的data,index,log文件名记录下来,然后还原时选中要导入的bak文件,再将原来的bak文件中的data,index,log文件信息替换成之前的,最后修改数据库名,完成还原
那这些步骤通过sql语句应该如何实现。这样可以不用每次都通过sqlserver management studio操作,而是可以写个脚本直接完成

5 个解决方案

#1


网上有类似的,要不你先参考下
http://blog.csdn.net/liuhelong/article/details/3335687
有啥问题再说~~

#2


引用 1 楼 ky_min 的回复:
网上有类似的,要不你先参考下
http://blog.csdn.net/liuhelong/article/details/3335687
有啥问题再说~~


这个只是同一个数据库的备份还原
下面是我在网上看到的一个脚本
RESTORE DATABASE DBName 
   FROM DISK = 'E:\dumpfile.bak'
   WITH MOVE 'mdf_file' TO 'E:\mdf_file.mdf', 
   MOVE 'log_file' TO 'E:\log_file.ldf',
STATS = 10, REPLACE
GO
这种可以用做A数据库的bak文件回滚到B数据库吗?datafile和indexfile不用替换吗?

#3


回滚??还原吧~

你把 DBName  改成 数据库B的名称 
将 DISK = 'E:\dumpfile.bak' 改到你A备份的地方
然后 MOVE后面的mdf_file log_file要成你的A库的相应逻辑名
TO 后面 改成你要放的地方
REPLACE 确定你要覆盖原有的,就加上~~

#4


引用 3 楼 ky_min 的回复:
回滚??还原吧~

你把 DBName  改成 数据库B的名称 
将 DISK = 'E:\dumpfile.bak' 改到你A备份的地方
然后 MOVE后面的mdf_file log_file要成你的A库的相应逻辑名
TO 后面 改成你要放的地方
REPLACE 确定你要覆盖原有的,就加上~~


那sqlserver management studio里设置的overwrite = 'true' 和 修改数据库名呢,在脚本里不用写吗

#5


已经包含在其中了

#1


网上有类似的,要不你先参考下
http://blog.csdn.net/liuhelong/article/details/3335687
有啥问题再说~~

#2


引用 1 楼 ky_min 的回复:
网上有类似的,要不你先参考下
http://blog.csdn.net/liuhelong/article/details/3335687
有啥问题再说~~


这个只是同一个数据库的备份还原
下面是我在网上看到的一个脚本
RESTORE DATABASE DBName 
   FROM DISK = 'E:\dumpfile.bak'
   WITH MOVE 'mdf_file' TO 'E:\mdf_file.mdf', 
   MOVE 'log_file' TO 'E:\log_file.ldf',
STATS = 10, REPLACE
GO
这种可以用做A数据库的bak文件回滚到B数据库吗?datafile和indexfile不用替换吗?

#3


回滚??还原吧~

你把 DBName  改成 数据库B的名称 
将 DISK = 'E:\dumpfile.bak' 改到你A备份的地方
然后 MOVE后面的mdf_file log_file要成你的A库的相应逻辑名
TO 后面 改成你要放的地方
REPLACE 确定你要覆盖原有的,就加上~~

#4


引用 3 楼 ky_min 的回复:
回滚??还原吧~

你把 DBName  改成 数据库B的名称 
将 DISK = 'E:\dumpfile.bak' 改到你A备份的地方
然后 MOVE后面的mdf_file log_file要成你的A库的相应逻辑名
TO 后面 改成你要放的地方
REPLACE 确定你要覆盖原有的,就加上~~


那sqlserver management studio里设置的overwrite = 'true' 和 修改数据库名呢,在脚本里不用写吗

#5


已经包含在其中了