MS SQL数据批量备份还原(适用于MS SQL 2005+)
原文:MS SQL数据批量备份还原(适用于MS SQL 2005+)
我们知道通过Sql代理,可以实现数据库的定时备份功能;当数据库里的数据库很多时,备份一个数据库需要建立对应的定时作业,相对来说比较麻烦;
还好,微软自带的osql工具,比较实用,通过在命令行里里输入命令,也能实现数据库备份的功能;如果能通过sql语句来生成一个批处理文件,那就方便了;
下面即是生成批处理文件的sql脚本,通过它可以实现:运行一个批处理文件,备份数据库服务器上的所有数据库到指定目录。
生成批量备份脚本:
/************************************************************
* 数据备份脚本:
* 1.运行前,请根据实际配置修改相应账户信息;
* 2.请将脚本执行结果另存为批处理文件,执行批处理文件即可;
* 时间: 2015/3/10 14:21:15
************************************************************/ DECLARE @name NVARCHAR(200);
DECLARE @path NVARCHAR(500);
DECLARE @dbServer NVARCHAR(500);
DECLARE @dbUserName NVARCHAR(500);
DECLARE @dbUserPwd NVARCHAR(500);
--备份文件存放路径
SET @path = N'E:\05_DataBase_bakup\';
--数据库服务器
SET @dbServer = N'.';
--数据库用户名
SET @dbUserName = N'sa';
--数据库用户密码
SET @dbUserPwd = N'';
DECLARE cursors CURSOR FOR
--查询集合
SELECT [name]
FROM [sysdatabases]
WHERE name NOT IN ( 'master', 'tempdb', 'model', 'msdb' ); OPEN cursors;
FETCH NEXT FROM cursors
INTO @name;
WHILE @@fetch_status = 0
BEGIN
--遍历集合
PRINT 'osql -S ' + @dbServer + ' -U ' + @dbUserName + ' -P ' + @dbUserPwd + ' -Q "BACKUP DATABASE [' + @name
+ '] TO DISK = ''' + @path + '[%date:~0,4%%date:~5,2%%date:~8,2%]' + @name + '.bak''"';
FETCH NEXT FROM cursors
INTO @name;
END;
CLOSE cursors;
DEALLOCATE cursors;
生成批量还原脚本:
/************************************************************
* 生成批量还原数据库脚本
* Time: 2015/4/19 18:30:05
************************************************************/
DECLARE @name NVARCHAR(200);
DECLARE @fileName NVARCHAR(200);
DECLARE @path NVARCHAR(500);
DECLARE @restorePath NVARCHAR(500);
DECLARE @dbServer NVARCHAR(500);
DECLARE @dbUserName NVARCHAR(500);
DECLARE @dbUserPwd NVARCHAR(500);
DECLARE @mdfName NVARCHAR(500);
DECLARE @ldfName NVARCHAR(500);
--数据库备份文件存放路径
SET @path = N'd:\DBBAK\';
--数据库还原后的文件存放路径
SET @restorePath = N'D:\PMSDB\';
--还原到的数据库服务器
SET @dbServer = N'127.0.0.1';
--还原到的数据库用户名
SET @dbUserName = N'sa';
--还原到的数据库用户密码
SET @dbUserPwd = N'xxxxxxx';
DECLARE cursors CURSOR FOR
--查询集合
--注意:这里将数据库文件的物理路径替换掉了一部分,只保留数据库名称
SELECT [name],
REPLACE(REPLACE(filename, 'D:\DBBAK\', ''), '.mdf', '') AS [fileName]
FROM [sysdatabases]
WHERE name NOT IN ( 'master', 'tempdb', 'model', 'msdb', 'DWDiagnostics', 'DWConfiguration', 'DWQueue', 'BIReport',
'distribution', 'ReportServer', 'ReportServerTempDB'
)
ORDER BY name;
OPEN cursors;
FETCH NEXT FROM cursors
INTO @name,
@fileName;
WHILE @@fetch_status = 0
BEGIN
SELECT @mdfName = f.name
FROM sysaltfiles f
INNER JOIN sysdatabases d
ON (f.dbid = d.dbid)
AND d.name = @name
AND CHARINDEX('MDF', f.filename) > 0;
SELECT @ldfName = f.name
FROM sysaltfiles f
INNER JOIN sysdatabases d
ON (f.dbid = d.dbid)
AND d.name = @name
AND CHARINDEX('LDF', f.filename) > 0;
--遍历集合
PRINT 'osql -S ' + @dbServer + ' -U ' + @dbUserName + ' -P ' + @dbUserPwd + ' -Q "RESTORE DATABASE [' + @name
+ '] FROM DISK = ''' + @path + '[20170720]' + @name + '.bak'' WITH FILE = 1, MOVE N''' + @mdfName
+ ''' TO N''' + @restorePath + @name + '.mdf'', MOVE N''' + @ldfName + ''' TO N''' + @restorePath + @name
+ '.LDF'', NOUNLOAD, REPLACE,STATS = 10';
FETCH NEXT FROM cursors
INTO @name,
@fileName;
END;
CLOSE cursors;
DEALLOCATE cursors;
MS SQL数据批量备份还原(适用于MS SQL 2005+)的更多相关文章
- MS SQL数据批量备份还原(适用于MS SQL 2005+) 分类: SQL Server 数据库 2015-03-10 14:32 103人阅读 评论(0) 收藏
我们知道通过Sql代理,可以实现数据库的定时备份功能:当数据库里的数据库很多时,备份一个数据库需要建立对应的定时作业,相对来说比较麻烦: 还好,微软自带的osql工具,比较实用,通过在命令行里里输入命 ...
- SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原
原文:SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原 --作业定时压缩脚本 多库批量操作 DECLARE @DatabaseName NVARCHAR(50) DECLARE @ ...
- sql 数据库的备份还原问题
今天工作中犯了一个严重的错误,就是在sql中写了一个update语句,还没写条件呢,结果误按了F5,唉,太佩服自己啦...这个脑子怎么不管用了呢?? 唉不说了,我在网上翻来覆去的找资料,最终想是不是可 ...
- sql数据库的备份还原问题
sql数据库的备份还原问题 今天工作中犯了一个严重的错误,就是在sql中写了一个update语句,还没写条件呢,结果误按了F5,唉,太佩服自己啦...这个脑子怎么不管用了呢?? 唉不说了,我在网上翻来 ...
- SQL server数据库备份还原问题备忘(亲测有效)
问题一:SQL server数据库备份还原方法 http://www.cnblogs.com/zgqys1980/archive/2012/07/04/2576382.html 问题二:无法执行 BA ...
- SQL Server数据库备份&还原
一.备份 1.登录数据库 2.找到要还原的数据库 右键-任务-备份-添加(路径只写一个,刚开始二个总是报错)-确定 二.还原数据库 这个之间报错了二次 1.报错1:备份集中的数据库与现有数据库“XXX ...
- SQL Server 数据库备份还原和数据恢复
认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点. 数据 ...
- 你真的会使用SQL Server的备份还原功能吗?之二:主要备份类型
假设在下面几个时间段中,一个数据库积累插入了如下数据: 1.完整数据库备份 故名思意,完整数据库备份包括完整的数据库信息.它包括数据库的数据文件和备份结尾的部份活动事务日志. 完整备份基本语法如下: ...
- 数据库备份还原工具EMS SQL Angel for SQL Server发布1.3版本
EMS公司,是专门从事企业数据库以及内置于多层次客户服务器结构自动化开发.其EMS SQL Angel for SQL Server工具,便是SQL Servers数据库数据备份还原工具,并且还能使用 ...
随机推荐
- springboot04 Ajax json Jquery
一.Ajax 1.同步&异步请求 在所有的请求响应交互世界里,我们有通常会划分出来两种形态的请求, 一种是同步请求.另一种是异步请求 .比如注册.登录.添加数据等等这些请求执行的就是同步请求, ...
- php数组循环的三种方式
PHP 的遍历数组的三种方式:for循环.foreach循环.while.list().each()组合循环 PHP当中数组分为:索引数组[转换成json是数组]和关联数组[转换成json是对象] f ...
- JavaScript各种数据类型
(一)JavaScript跟Java.Python等语言一样,也是一门编程语言,配合着html,css等可以让画面动起来, 在页面中导入方式主要有两种,如图 可以自己写在文件里面,一般写在body标签 ...
- urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed解决办法
描述 今天学习写一篇用python(我的是Python 3.6)登录知乎网(https://www.zhihu.com) 的爬虫,测试时报错:urlopen error [SSL: CERTIFICA ...
- python获取文件夹下数量
import os totalSize = 0 fileNum = 0 dirNum = 0 def visitDir(path): global totalSize global fileNum g ...
- 【PHP】- 启用CRUL和GD
1.修改php.ini文件,确保extension_dir配置为php目录的ext,如图: 2.修改php.ini文件,将以下两项取消注释: 3.将php目录下的 libeay32.dll 和 lib ...
- jquery对中文进行base64加密,后台用java进行base64解密
项目中遇到将中文从前台传到后台过程中,出现乱码,一番尝试之后,均是乱码,然后尝试在js代码中先进行base64加密,然后在Java中再进行解密,完美的解决了乱码问题,步骤如下 一,html页面引入jQ ...
- HDU 1159 最长公共子序列(n*m)
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- TCP面试题之滑动窗口原理
TCP 滑动窗口 作用: 1. 提供TCP可靠性:对发送的数据进行确认 2. 流量控制:窗口大小随链路变化 一.TCP窗口机制 TCP中窗口大小是指tcp协议一次传输多少个数据.因为TCP是一个面向连 ...
- ubuntu 解压
.tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ---------------------- ...