SQLSERVER 2008批量还原数据库

本文提供了一段 SQL Server 的 T-SQL 脚本,用于从指定路径的备份文件还原数据库到新的位置,并自动调整文件路径。该脚本通过创建临时表来获取备份文件的详细信息,然后构建并执行还原命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

USE Master
GO

DECLARE @BakPath nvarchar(200)
DECLARE @RestorePath nvarchar(200)
DECLARE @DataBaseName nvarchar(100)
DECLARE @DBName nvarchar(100)
DECLARE @SQL nvarchar(max)
 
 
SET @DBName='NSMC_HOTEL'   --还原数据库名
SET @BakPath='D:\Data\F4502'    --备份集路径
SET @RestorePath='D:\4502\NSMC_HOTEL_DB' --还原路径

 

DECLARE DB_CURSOR CURSOR FORWARD_ONLY FOR
  SELECT @DBName
 

CREATE TABLE #Temp(
  LogicalName nvarchar(100),
  PhysicalName nvarchar(100),
  Type nvarchar(100),
  FileGroupName nvarchar(100),
  Size nvarchar(100),
  MaxSize nvarchar(100),
  FileId nvarchar(100),
  CreateLSN nvarchar(100),
  DropLSN nvarchar(100),
  UniqueId nvarchar(100),
  ReadOnlyLSN nvarchar(100),
  ReadWriteLSN nvarchar(100),
  BackupSizeInBytes nvarchar(100),
  SourceBlockSize nvarchar(100),
  FileGroupId nvarchar(100),
  LogGroupGUID nvarchar(100),
  DifferentialBaseLSN nvarchar(100),
  DifferentialBaseGUID nvarchar(100),
  IsReadOnly nvarchar(100),
  IsPresent nvarchar(100),
  TDEThumbprint nvarchar(100))
 
 OPEN DB_CURSOR
 
 FETCH NEXT FROM DB_CURSOR
 INTO @DataBaseName


 WHILE @@FETCH_STATUS=0
 BEGIN
 PRINT @DataBaseName
 
 INSERT INTO #Temp
 EXEC ('RESTORE FILELISTONLY FROM DISK='''+@BakPath+'\'+@DataBaseName+'.bak''')

 SET @SQL=NULL

 SELECT
  @SQL=ISNULL(@SQL,'')+',
  MOVE '''+LogicalName+''' TO '''+@RestorePath+'\'+REVERSE(LEFT(REVERSE(PhysicalName),CHARINDEX('\',REVERSE(PhysicalName))-1)) +''''
 FROM #Temp

 SET @SQL='RESTORE DATABASE '+@DataBaseName+' FROM DISK='''+@BakPath+'\'+@DataBaseName+'.bak''
 WITH RECOVERY ,REPLACE'+@SQL

 --Print @SQL

 EXEC (@SQL)
 TRUNCATE TABLE #Temp

 FETCH NEXT FROM DB_CURSOR
 INTO @DataBaseName
 END

 CLOSE DB_CURSOR
 DEALLOCATE DB_CURSOR

 DROP TABLE #Temp

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值