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数据库数据备份还原工具,并且还能使用 ...
随机推荐
- FOJ Problem 1015 土地划分
Problem 1015 土地划分 Accept: 823 Submit: 1956Time Limit: 1000 mSec Memory Limit : 32768 KB Probl ...
- P2052 [NOI2011]道路修建
题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1 条双向道路. 每条道 ...
- [SDOI2015][bzoj4518] 征途 [斜率优化dp]
题面 传送门 思路 把$vm^2$展开化一下式子,可以得到这样的等价公式: $vm^2=m\sum_{i=1}^m a_i^2-\sum_{i=1}^m a_i$ 那么我们要最小化的就是$\sum_{ ...
- c#网络编程-第一章
1.需求 获得网页数据,并填充到webbrowser空间中 2.代码示例 private void button1_Click_1(object sender, EventArgs e) { //1. ...
- webapp的favicon应该怎样组织代码
处理过那么多index 页面了那么关于特别针对于此页的favicon是时候详细的总结一下了 它是网站的头像,它出现在浏览器的收藏夹中(标题的旁边) ,浏览器标签页的左上角,微信公众号的logo,保存网 ...
- freescale 16位单片机的地址映射
以MC9S12XS128MAL为例,其实DG128之类的类似.如图一,128代表的是单片机中的FLASH大小为128K Byte,同理64代表的是单片机中的FLASH大小为64 K Byte,256代 ...
- YYH的王国(NOIP模拟赛Round 6)
题目描述 YYH拥有一个有n个城市的国家,编号为1~n.其中城市i到城市j的路径长度为i和j的最小公倍数.现在YYH想建一些高速公路,使得任意两座城市都能通过高速公路直接或间接到达.建造一条高速公路的 ...
- 【原创】Linux环境下的图形系统和AMD R600显卡编程(3)——AMD显卡简介
早期的显卡仅用于显示,后来显卡中加入了2D加速部件,这些部件用于做拷屏,画点,画线等操作.随着游戏.三维模拟以及科学计算可视化等需要,对3D的需求逐渐增加,早期图形绘制工作由CPU来完成,要达到真实感 ...
- Linux/Android——input_handler之evdev (四) 【转】
转自:http://blog.csdn.net/u013491946/article/details/72638919 版权声明:免责声明: 本人在此发文(包括但不限于汉字.拼音.拉丁字母)均为随意敲 ...
- selenium运行js下载文书网的文件
from selenium import webdriver driver=webdriver.Chrome() driver.get("http://wenshu.court.gov.cn ...