MSSQL段落还原脚本

--段落还原:数据库损坏范围比较大,跨多个数据文件甚至跨文件组的时候,我们不得不恢复整个数据库。--这时如果数据库特别大,数据库恢复时间将会很长。但我们可以使用SQL Server提供的段落还原,来逐步恢复数据库。
--首先备份尾日志:
BACKUP LOG [AdventureWorks] TO DISK =N‘D:\BACKUP_TEST\LOG_BACK_TAIL.trn‘ WITH NO_TRUNCATE ,NORECOVERY,COMPRESSION,STATS=10
--部分还原主文件组PRIMARY:
RESTORE DATABASE [AdventureWorks] FILEGROUP=N‘PRIMARY‘ FROM DISK=N‘D:\BACKUP_TEST\AD_FULL.bak‘ WITH PARTIAL,NORECOVERY,STATS=10
--还原副文件组MST:
RESTORE DATABASE [AdventureWorks] FILEGROUP=N‘MST‘ FROM DISK=N‘D:\BACKUP_TEST\AD_FULL.bak‘ WITH NORECOVERY,STATS=10
--依次还原日志:
RESTORE LOG [AdventureWorks] FROM DISK=N‘D:\BACKUP_TEST\LOG_BACK_1.TRN‘ WITH NORECOVERY,STATS=10
RESTORE LOG [AdventureWorks] FROM DISK=N‘D:\BACKUP_TEST\LOG_BACK_2.TRN‘ WITH NORECOVERY,STATS=10
--还原尾日志并恢复
RESTORE LOG [AdventureWorks] FROM DISK=N‘D:\BACKUP_TEST\LOG_BACK_TAIL.TRN‘ WITH RECOVERY,STATS=10
--此时AdventureWorks数据库中位于PRIMARY和MST文件组中的文件已经可以访问。
--但是位于其他文件组如:TRN文件组中的表还不能访问。
--消息 8653,级别 16,状态 1,第 2 行
--查询处理器无法为表或视图“****”生成计划,因为该表驻留在不处于联机状态的文件组中。
--接下来还原副文件组TRN:
RESTORE DATABASE [AdventureWorks] FILEGROUP=N‘TRN‘ FROM DISK=N‘D:\BACKUP_TEST\AD_FULL.bak‘ WITH NORECOVERY,STATS=10--如果数据库不是企业版,以上还原将会提示“尚未备份数据库 "AdventureWorks" 的日志尾部。”--需要再次备份一次日志尾部,意味着还原副文件组TRN的时候整个数据库都处于正在还原状态。所以对于非企业版而言,只能离线段落还原,个人觉得意义不是很大......
--依次还原日志:
RESTORE LOG [AdventureWorks] FROM DISK=N‘D:\BACKUP_TEST\LOG_BACK_1.TRN‘ WITH NORECOVERY,STATS=10
RESTORE LOG [AdventureWorks] FROM DISK=N‘D:\BACKUP_TEST\LOG_BACK_2.TRN‘ WITH NORECOVERY,STATS=10
--还原尾日志并恢复
RESTORE LOG [AdventureWorks] FROM DISK=N‘D:\BACKUP_TEST\LOG_BACK_TAIL.TRN‘ WITH RECOVERY,STATS=10
--此时位于副文件组TRN中的表已经可以访问了。
--段落还原全部完成

MSSQL段落还原脚本

时间: 2024-10-10 16:20:56

MSSQL段落还原脚本的相关文章

MSSQL通用还原脚本

MSSQL还原脚本 SQL Server通用还原脚本,只需修改第二步中,需要还原的数据库名称和路径 执行完脚本后会生成对应的还原命令,直接新建查询后执行即可 -- 2 - Initialize variables SET @dbName = 'Customer' SET @backupPath = 'D:\SQLBackups\' 脚本如下: --open-- xp_cmdshell sp_configure 'show advanced options',1 reconfigure go sp

MSSQL在线文件还原脚本

在线文件还原:如果比较大的MSSQL数据库的损坏只是集中在其中某一个文件或者文件组上,使用在线文件还原技术,只是把坏掉的数据文件或者文件组重建,能节约很多时间.以下是测试脚本(假设损坏的文件时Trn01): --首先还原损坏的文件Trn01(执行这一步之前,你必须取得数据库的独占访问权): RESTORE DATABASE [AdventureWorks] FILE=N'Trn01' FROM DISK=N'D:\BACKUP_TEST\AD_FULL.BAK' WITH NORECOVERY,

实战:INNOBACKUPEX for mysql 5.6自己主动还原脚本-v2

脚本再次更新,共享一下! #!/bin/sh # # 用法: # ./restore.sh /你备份文件的全路径 #[email protected] INNOBACKUPEX=innobackupex INNOBACKUPEX_PATH=/usr/bin/$INNOBACKUPEX TMP_LOG="/var/log/restore.$$.log" MY_CNF=/usr/local/mysql/my.cnf BACKUP_DIR=/backup # 你的备份主文件夹 FULLBAC

实战:INNOBACKUPEX for mysql 5.6自动还原脚本

#!/bin/sh # # 使用方法: # ./restore.sh /你备份文件的全路径 #[email protected] INNOBACKUPEX=innobackupex INNOBACKUPEX_PATH=/usr/bin/$INNOBACKUPEX TMP_LOG="/var/log/restore.$$.log" MY_CNF=/usr/local/mysql/my.cnf BACKUP_DIR=/backup # 你的备份主目录 FULLBACKUP_DIR=$BAC

Linux系统备份还原脚本

\ #!/bin/sh #备份linux系统. #命令如:sh 当前脚本.sh /dev/sdax 备份文件名 #参数1:备份的盘,备份前先umount.如:/dev/sda1 #参数2:备份保存的文件名. if [ $# -ne 2 ]; then echo "请传入两个参数." exit 0 fi #当前日期,用于建立临时文件夹和备份文件. datename=`date +%Y%m%d_%H%M%S` #临时挂载的文件夹名称 tmpdir="/tmp/dir${daten

PHP-数据库备份还原脚本

PHP数据库备份.还原 1. mydb.php //DB类2. backup.php //备份脚本 3. restore.php //还原脚本 1.数据库类 <?php class db{ var $linkid; var $sqlid; var $record; function db($host="localhost",$username="root",$password="",$database="mydb") {

xtrabackup自动还原脚本

xtrabackup自动还原 ************************************************************************************************ 应用场景: ************************************************************************************************ 1.备份目录为/backup/full和/backup/incre的架

xtrabackup自动还原脚本v2

xtrabackup自动还原 ************************************************************************************************ 应用场景: ************************************************************************************************ 1.备份目录为/backup/full和/backup/incre的架

ES(elasticsearch)备份还原脚本

在作es backup和es restore(导入)时,需要停es集群中的data节点,只保留master节点.以下图说明,星号标识的为master节点,其他为data节点.停两个节点之前,可以在页面上确认红色标示的docs值,再停两个data节点,检查运行着的节点其docs值与停之前一致. 备份脚本es_backup.sh #!/bin/bash filename=`date +%Y%m%d%H` backesFile=es$filename.tar.gz mkdir -p /xor/elas