为了保证数据库的安全性,我们都会规划数据库的容灾策略,包含本地备份、异地备份、raid。或者使用高可用性(如 日志传送、镜像、复制等)进行异地容灾。因为 SqlServer 数据库的备份仅仅有一个备份策略(如 完整-差异-日志),对某个数据库中,仅仅创建一个完整的策略,不要创建多个,否则备份链对不上。备份各在一方。对于备份。一般使用
完整备份+差异备份+日志备份,或者 完整备份+差异备份+日志传送,可是备份仅仅有一个文件。为了在异地也保存有同样的备份。SqlServer 有几种參数可设置多地保存。如 MIRROR TO ,COPY_ONLY ,但仅仅对完整备份有效。全部其它情况下,都使用 windows 命令复制到其它地方做冗余存储。

曾经也用过一种方法。拷贝N天内的数据到其它地方(參考 forfiles 和 xcopy 在windows下拷贝N天内更改过的文件),可是使用windows 作业的方法拷贝。并不及时。这里就介绍一种方法。及时异地存储到网络路径中,也就是数据库备份完毕后,马上把文件复制到异地中。

在一个目录中。有众多的备份文件,怎么筛选出刚刚备份出来的文件呢?

用 windows 命令批处理应该能够完毕,可是出来会太麻烦。那就在 SqlServer 寻找吧。~

SqlServer 中每一个备份都会有记录,备份的名称、路径、时间 等待都能够从备份历史中找出。

以master 完整备份为例:

SELECT TOP(1) media_set_id ,name
FROM msdb.dbo.backupset
WHERE database_name = 'master' and type = 'D'
ORDER BY backup_finish_date DESC SELECT physical_device_name
FROM msdb.dbo.backupmediafamily
WHERE media_set_id = 2048

这些备份是维护计划自己主动备份的,每一个备份集中仅仅有一个备份文件,这就能够唯一确定一个文件了!~

顺便说明一下,backupset 中的 name 有时与实际的物理文件名不匹配,所以不用该名字。可是 backupset 中有时间信息。就按备份完毕时间排序取第一条最新的。

注:backupset 中的字段 type 表示不同的备份类型。D = 数据库; I = 差异数据库 ;L = 日志 。(參考backupset

因此,就能够确定 master 最新的完整备份文件了!

SELECT physical_device_name FROM msdb.dbo.backupmediafamily
where media_set_id =(
SELECT TOP(1) media_set_id
FROM msdb.dbo.backupset
WHERE database_name = 'master' and type = 'D'
ORDER BY backup_finish_date DESC
)

为了能在 SqlServer 中更方便管理,文件的拷贝也在数据库中运行,须要启用系统命令 xp_cmdshell。

exec sp_configure 'show advanced options',1
reconfigure exec sp_configure 'xp_cmdshell',1
reconfigure

对于异地包含,须要建立网络映射:

exec master.dbo.xp_cmdshell 'net use \\IP\yourPath "password" /user:IP\user'

终于的拷贝脚本例如以下,在SqlServer使用 xp_cmdshell  进行拷贝:

DECLARE @OldPath NVARCHAR(200)
DECLARE @NewPath NVARCHAR(100)
DECLARE @cmdSQL NVARCHAR(300)
SET @NewPath = N'\\192.168.1.111\master\'
SELECT @OldPath = physical_device_name FROM msdb.dbo.backupmediafamily
WHERE media_set_id =(
SELECT TOP(1) media_set_id
FROM msdb.dbo.backupset
WHERE database_name = 'master' and type = 'D'
ORDER BY backup_finish_date DESC
)
SET @cmdSQL = N'xcopy "'+@OldPath+'" "'+@NewPath+'" /y '
--SELECT @cmdSQL
EXEC MASTER.DBO.XP_CMDSHELL @cmdSQL

命令完毕了。该放在哪里运行呢? 当然是数据库备份作业的下一步了!

~ 哈哈 O(∩_∩)O 自言自语~~

打开维护计划。选择控制流“ 运行T-SQL语句”的任务,将上面的语句粘贴到里面中。作为系统数据库备份后的下一步。完毕。~

运行看看!~这样备份就比較快了!~(相同试试其它数据库的 完整备份+差异备份+日志备份)

SQLServer 多点及时备份技巧的更多相关文章

  1. WinRAR备份技巧 - imsoft.cnblogs

    RAR控制台日常备份策略 run.batrar a -ep1 -agYYYY{年}MM{月}DD{日} 备份 @list.txt-ep1是忽略原文件路径,rar包里是一堆文件,没有目录结构-ag附加命 ...

  2. 好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)

    转载:http://www.cnblogs.com/lyhabc/p/3322437.html 挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面) 这个工具主要就是 ...

  3. 挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)

    原文:挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面) 挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面) 这个工具主要就是自 ...

  4. SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)

    挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面) 这个工具主要就是自动备份数据库,一键还原数据库,发送备份数据库日志报告到邮箱,自动压缩备份好的数据库 定期执行数 ...

  5. SQLSERVER SQL性能优化技巧

    这篇文章主要介绍了SQLSERVER SQL性能优化技巧,需要的朋友可以参考下 1.选择最有效率的表名顺序(只在基于规则的优化器中有效)       SQLSERVER的解析器按照从右到左的顺序处理F ...

  6. Linux MySQL差异备份技巧

    MSSQL差异备份使用技巧 15 Apr 2013 所谓的差异备份,就是只备份最近一次备份之后到此次备份之前所增加的那一部分数据.打个比方我第N次备份后数据库存放的内容是ABCD,然后我第N+1次 备 ...

  7. SQLServer 理解copyonly备份操作

    标签:MSSQL/日志截断 概述 Alwayson在添加数据库的过程中如果同步首选项选择的是“完整”,那么就会在主副本上执行copyonly的完整备份和日志备份在辅助副本上执行还原操作,也正是这个操作 ...

  8. mssql sqlserver 快速表备份和表还原的方法

    摘要: 在sqlserver维护中,我们偶尔需要运行一些sql脚本对数据进行相关修改操作,在数据修改前我们必须对表数据进行备份来避免出现异常时,可以快速修复数据, 下文讲述sqlserver维护中,快 ...

  9. sqlserver数据库的备份与还原——完整备份与还原

    sqlserver提供四种数据库备份方式 完整备份:备份整个数据库的所有内容包括书屋和日志 差异备份:只备份上次完整备份后更高的数据部分 事务日志备份:只备份事务日志里的内容 文件或文件组备份:只备份 ...

随机推荐

  1. SQL之LEFT JOIN,EIGHT JOIN,INSERT JOIN的区别

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ...

  2. POJ 1659 Havel-Hakimi定理

    关于题意和Havel-Hakimi定理,可以看看http://blog.csdn.net/wangjian8006/article/details/7974845 讲得挺好的. 我就直接粘过来了 [ ...

  3. VmWare 安装 Centos

    VMware CentOS7 的 ISO 文件 方法/步骤   1 打开虚拟机软件“VMware”,选择“创建新的虚拟机”: 2 选择“自定义(高级)”选项,点击“下一步”: 3 在“硬件兼容性”处选 ...

  4. RunLoop相关知识

    RunLoop,翻译过来是运行环路.我们在创建命令行项目和创建ios项目时,发现命令行项目当最后一行代码执行完后项目就自动退出了,而ios项目确可以一直运行,知道用户手动点击退出按钮.这就是因为ios ...

  5. [转]VIM字符替换

    语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行. 如:"1,20" ...

  6. 【Hexo】deploy出错的解决方法

    .ERROR Deployer not found: git 执行npm install hexo-deployer-git --save .$ hexo d INFO Deploying: git ...

  7. 揭开jQuery的面纱

    简单地说,jQuery是一个优秀的JavaScript类库,也就是使用JavaScript面向对象的性质编写的一个JavaScript类的集合.jQuery究竟能为我们提供哪些功能呢?简单地说可以从七 ...

  8. 06--谈谈:C++类的“包含”机制

    谈谈:C++类的“包含”机制   本人在学习Qt的时候发现了一个非常有趣的现象.有很多函数的调用方法都写成了如下的形式: object.func().func2(); 这令小弟着实不懂.在上面这段代码 ...

  9. 【sqli-labs】 less27a GET- Blind based -All you Union&Select Belong to us -Double Quotes(GET型基于盲注的去除了Union和Select的双引号注入)

    和less 27一样,单引号换双引号 http://192.168.136.128/sqli-labs-master/Less-27a/?id=0"%a0uNion%a0sElect%a01 ...

  10. MySQL在Linux下的表名如何不区分大小写

    MySQL在Linux下的表名如何不区分大小写   今天测试的时候,遇到一些问题,明明看到数据,就是查不出来;后来发现,在linux下, mysql的表名区分大小写,而在windows下是不区分,从w ...