MSSQL通用还原脚本
admin
2023-06-05 17:21:34
0

MSSQL还原脚本

SQL Server通用还原脚本,只需修改第二步中,需要还原的数据库名称和路径

执行完脚本后会生成对应的还原命令,直接新建查询后执行即可

MSSQL通用还原脚本


-- 2 - Initialize variables 

SET @dbName = 'Customer' 

SET @backupPath = 'D:\SQLBackups\' 


脚本如下:


--open-- xp_cmdshell

sp_configure 'show advanced options',1

reconfigure

go

sp_configure 'xp_cmdshell',1

reconfigure

go

 

 

USE Master; 

GO  

SET NOCOUNT ON 

 

-- 1 - Variable declaration 

DECLARE @dbName sysname 

DECLARE @backupPath NVARCHAR(500) 

DECLARE @cmd NVARCHAR(500) 

DECLARE @fileList TABLE (backupFile NVARCHAR(255)) 

DECLARE @lastFullBackup NVARCHAR(500) 

DECLARE @lastDiffBackup NVARCHAR(500) 

DECLARE @backupFile NVARCHAR(500) 

 

-- 2 - Initialize variables 

SET @dbName = 'Customer' 

SET @backupPath = 'D:\SQLBackups\' 

 

-- 3 - get list of files 

SET @cmd = 'DIR /b ' + @backupPath 

 

INSERT INTO @fileList(backupFile) 

EXEC master.sys.xp_cmdshell @cmd 

 

-- 4 - Find latest full backup 

SELECT @lastFullBackup = MAX(backupFile)  

FROM @fileList  

WHERE backupFile LIKE '%.BAK'  

   AND backupFile LIKE @dbName + '%' 

 

SET @cmd = 'RESTORE DATABASE ' + @dbName + ' FROM DISK = '''  

       + @backupPath + @lastFullBackup + ''' WITH NORECOVERY, REPLACE' 

PRINT @cmd 

 

-- 4 - Find latest diff backup 

SELECT @lastDiffBackup = MAX(backupFile)  

FROM @fileList  

WHERE backupFile LIKE '%.DIF'  

   AND backupFile LIKE @dbName + '%' 

   AND backupFile > @lastFullBackup 

 

-- check to make sure there is a diff backup 

IF @lastDiffBackup IS NOT NULL 

BEGIN 

   SET @cmd = 'RESTORE DATABASE ' + @dbName + ' FROM DISK = '''  

       + @backupPath + @lastDiffBackup + ''' WITH NORECOVERY' 

   PRINT @cmd 

   SET @lastFullBackup = @lastDiffBackup 

END 

 

-- 5 - check for log backups 

DECLARE backupFiles CURSOR FOR  

   SELECT backupFile  

   FROM @fileList 

   WHERE backupFile LIKE '%.TRN'  

   AND backupFile LIKE @dbName + '%' 

   AND backupFile > @lastFullBackup 

 

OPEN backupFiles  

 

-- Loop through all the files for the database  

FETCH NEXT FROM backupFiles INTO @backupFile  

 

WHILE @@FETCH_STATUS = 0  

BEGIN  

   SET @cmd = 'RESTORE LOG ' + @dbName + ' FROM DISK = '''  

       + @backupPath + @backupFile + ''' WITH NORECOVERY' 

   PRINT @cmd 

   FETCH NEXT FROM backupFiles INTO @backupFile  

END 

 

CLOSE backupFiles  

DEALLOCATE backupFiles  

 

-- 6 - put database in a useable state 

SET @cmd = 'RESTORE DATABASE ' + @dbName + ' WITH RECOVERY' 

PRINT @cmd 

 

 

 

 


 


相关内容

热门资讯

原创 火... ## 这是一张MMX航天器的一个版本在火星轨道插入(MOI)期间的图像。图片来源:JAXA 火卫一...
“智在甬为 码上出彩”华为云企... 8月7日,“智在甬为 码上出彩”华为云企业快成长AI创新论坛在宁波正式举办。本次活动由宁波市软件行业...
原创 8... 近期,国内人工智能领域的巨头企业如阿里云、火山引擎及百度,在短短两个月内,密集地与同一家公司签署了深...
换电模式为什么要统一电池标准? 随着新能源汽车产业的迅猛发展,补能效率成为用户关注的核心痛点之一。相较于传统充电方式,电池更换技术能...
寻宝不用挖?一文了解给地球做“... 提到找矿,你脑海里是不是浮现出地质队员背着地质锤、翻山越岭、敲敲打打的辛苦画面?如今科技早已今非昔比...
中美登月竞赛白热化,Space... 嫦娥七号奔赴月球南极开展探测,美国“阿尔忒弥斯”计划继续推进,人类新一轮登月竞赛正在提速。目前,美国...
“婚外胚胎案”妻子回应起号质疑... 近日,“江苏无锡朱女士申请销毁丈夫婚外胚胎遭拒案”持续引发关注。今天,也就是2026年8月8日,是朱...
特朗普说很多人称他是最伟大总统... 当地时间8月6日,有记者在采访美国总统特朗普时提出,如果民主党人在中期选举后控制国会众议院,可能会再...
贿赂!性侵!霸凌!韩国体坛缘何... 韩国队在美加墨世界杯小组赛出局引发的韩国体坛震荡余波未了,韩国媒体又爆出一则有关韩国足球的惊天丑闻—...
vivo手机数据丢失或损坏 如果您的vivo手机数据丢失或损坏,以下是一些可能的解决步骤:1.立即停止使用手机:避免继续操作手机...