背景:我在工作时常常需要将一整个生产环境的数据库全部备份同步到测试环境使用,由于测试环境磁盘数量有限,直接还原会导致报错目录查找失败
因此,我会自定义一个路径,用于将备份文件的数据文件和日志文件迁移至该路径,以下是脚本内容,分为两种情况,以下两种方式都应在备份数据库的服务器(生产db)上执行
1、数据文件和日志文件分开放置
declare @file_path nvarchar(255)
declare @log_path nvarchar(255)
set @file_path = 'f:\databasefiles\' --数据文件路径
set @log_path = 'd:\databasefiles\' --日志文件路径
declare @file_path_from nvarchar(255)
set @file_path_from = 'd:\databasebackup\' --备份文件路径
declare @sql01 nvarchar(max)
declare @sql02 nvarchar(max)
declare @sql03 nvarchar(max)
declare @sql04 nvarchar(max)
declare @len int
declare @dbname nvarchar(50)
declare @logic_file_name nvarchar(50) --逻辑文件名
declare @logic_file_name_total nvarchar(50) --物理文件名
create table #db_name(dbname nvarchar(50))
create table #sql_move(sql_move nvarchar(max))
create table #sql_restore(sql_restore nvarchar(max))
insert into #db_name select db.name
from sys.sysdatabases db
where db.dbid >4 and db.name not like '%snap%' --排除了系统数据库和快照
while exists(select top 1 * from #db_name)
begin
select top 1 @dbname = dbname from #db_name
create table #logic_name(dbname nvarchar(50),logic_file_name nvarchar(50),logic_file_name_total nvarchar(50))
insert into #logic_name select db.name,mf.name,right(phy
发表评论