我们知道通过Sql代理,可以实现数据库的定时备份功能;当数据库里的数据库很多时,备份一个数据库需要建立对应的定时作业,相对来说比较麻烦;

还好,微软自带的osql工具,比较实用,通过在命令行里里输入命令,也能实现数据库备份的功能;如果能通过sql语句来生成一个批处理文件,那就方便了;

下面即是生成批处理文件的sql脚本,通过它可以实现:运行一个批处理文件,备份数据库服务器上的所有数据库到指定目录。

生成批量备份脚本:

  1. /************************************************************
  2. * 数据备份脚本:
  3. * 1.运行前,请根据实际配置修改相应账户信息;
  4. * 2.请将脚本执行结果另存为批处理文件,执行批处理文件即可;
  5. * 时间: 2015/3/10 14:21:15
  6. ************************************************************/
  7.  
  8. DECLARE @name NVARCHAR(200)
  9. DECLARE @path NVARCHAR(500)
  10. DECLARE @dbServer NVARCHAR(500)
  11. DECLARE @dbUserName NVARCHAR(500)
  12. DECLARE @dbUserPwd NVARCHAR(500)
  13. --备份文件存放路径
  14. SET @path = 'E:\05_DataBase_bakup\'
  15. --数据库服务器
  16. SET @dbServer = '.'
  17. --数据库用户名
  18. SET @dbUserName = 'sa'
  19. --数据库用户密码
  20. SET @dbUserPwd = '123'
  21. DECLARE cursors CURSOR
  22. FOR
  23. --查询集合
  24. SELECT [name]
  25. FROM [sysdatabases]
  26. WHERE NAME NOT IN ('master', 'tempdb', 'model', 'msdb')
  27.  
  28. OPEN cursors
  29. FETCH NEXT FROM cursors INTO @name
  30. WHILE @@fetch_status = 0
  31. BEGIN
  32. --遍历集合
  33. PRINT 'osql -S ' + @dbServer + ' -U ' + @dbUserName + ' -P ' + @dbUserPwd +
  34. ' -Q "BACKUP DATABASE ['
  35. + @name + '] TO DISK = ''' + @path +
  36. '[%date:~0,4%%date:~5,2%%date:~8,2%]' + @name + '.bak''"'
  37. FETCH NEXT FROM cursors INTO @name
  38. END
  39. CLOSE cursors
  40. DEALLOCATE cursors

生成批量还原脚本:

  1. /************************************************************
  2. * 生成批量还原数据库脚本
  3. * Time: 2015/4/19 18:30:05
  4. ************************************************************/
  5. DECLARE @name NVARCHAR(200)
  6. DECLARE @fileName NVARCHAR(200)
  7. DECLARE @path NVARCHAR(500)
  8. DECLARE @restorePath NVARCHAR(500)
  9. DECLARE @dbServer NVARCHAR(500)
  10. DECLARE @dbUserName NVARCHAR(500)
  11. DECLARE @dbUserPwd NVARCHAR(500)
  12. --数据库备份文件存放路径
  13. SET @path = 'E:\05_DataBase_bakup\'
  14. --数据库还原后的文件存放路径
  15. SET @restorePath = 'E:\db2008\'
  16. --还原到的数据库服务器
  17. SET @dbServer = '192.168.0.7,1501\SQL2008'
  18. --还原到的数据库用户名
  19. SET @dbUserName = 'netuser'
  20. --还原到的数据库用户密码
  21. SET @dbUserPwd = 'netuser2008'
  22. DECLARE cursors CURSOR
  23. FOR
  24. --查询集合
  25. --注意:这里将数据库文件的物理路径替换掉了一部分,只保留数据库名称
  26. SELECT [name],
  27. REPLACE (REPLACE(FILENAME, 'E:\01.数据库\', ''), '.mdf', '') AS
  28. [fileName]
  29. FROM [sysdatabases]
  30. WHERE NAME NOT IN ('master', 'tempdb', 'model', 'msdb')
  31.  
  32. OPEN cursors
  33. FETCH NEXT FROM cursors INTO @name,@fileName
  34. WHILE @@fetch_status = 0
  35. BEGIN
  36. --遍历集合
  37. PRINT 'osql -S ' + @dbServer + ' -U ' + @dbUserName + ' -P ' + @dbUserPwd +
  38. ' -Q "RESTORE DATABASE [' + @name + '] FROM DISK = ''' + @path + @name +
  39. '.bak'' WITH FILE = 1, MOVE N''' + @fileName + ''' TO N''' + @restorePath
  40. + @name
  41. + '.mdf'', MOVE N''' + @fileName + '_log'' TO N''' + @restorePath + @name +
  42. '.LDF'', NOUNLOAD, REPLACE,STATS = 10'
  43. FETCH NEXT FROM cursors INTO @name,@fileName
  44. END
  45. CLOSE cursors
  46. DEALLOCATE cursors

版权声明:本文为博主原创文章,未经博主允许不得转载。

MS SQL数据批量备份还原(适用于MS SQL 2005+) 分类: SQL Server 数据库 2015-03-10 14:32 103人阅读 评论(0) 收藏的更多相关文章

  1. MS SQL数据批量备份还原(适用于MS SQL 2005+)

    原文:MS SQL数据批量备份还原(适用于MS SQL 2005+) 我们知道通过Sql代理,可以实现数据库的定时备份功能:当数据库里的数据库很多时,备份一个数据库需要建立对应的定时作业,相对来说比较 ...

  2. C# 获取网页数据、获取本机IP 分类: C# 2014-12-16 14:59 308人阅读 评论(0) 收藏

    说明: (1) http://www.3322.org/dyndns/getip 这个网址可以获取本机IP,读取的内容就是本机IP (2)方法经测试,可以实现. (3)参考:http://www.cn ...

  3. SQL ID自增列从1开始重新排序 分类: SQL Server 2014-05-19 14:46 652人阅读 评论(0) 收藏

    数据库中把ID自增长重置成1: 一般做法:(太麻烦) 复制表数据->删除原表.新建一张表->粘贴: 新方法: 数据库中:新建查询->复制.粘贴一下代码->修改表名,执行即可(先 ...

  4. irms模拟数据生成及数据分析 分类: H_HISTORY 2015-03-06 14:17 212人阅读 评论(0) 收藏

    一.数据准备 1.每天生成随机一个文本,每小时向文本中追加2次数据,每次10万条 随机数据生成: 2,32  * * * *  bash /mnt/jediael/irms/signalGenerat ...

  5. sql 视图 按where条件多个字段取一个 分类: SQL Server 2014-12-01 14:09 308人阅读 评论(0) 收藏

    首先介绍一下 Case ..When...Then..End  的用法: CASEJiXiaoFind_RowID  WHEN '1' THENJiXiao_Money1  WHEN '2' THEN ...

  6. JS 循环遍历JSON数据 分类: JS技术 JS JQuery 2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{"options":"[{

    JS 循环遍历JSON数据 分类: JS技术 JS JQuery2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{"options&q ...

  7. Oracle备份与恢复介绍(物理备份与逻辑备份) 分类: Oracle 2015-07-27 22:59 15人阅读 评论(0) 收藏

    算是挺全的了,有命令有真相 原文链接:http://blog.chinaunix.net/uid-354915-id-3525989.html 一.Oracle备份方式分类: Oracle有两类备份方 ...

  8. 用IBM WebSphere DataStage进行数据整合: 第 1 部分 分类: H2_ORACLE 2013-08-23 11:20 688人阅读 评论(0) 收藏

    转自:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0602zhoudp/ 引言 传统的数据整合方式需要大量的手工 ...

  9. 跨服务器备注SQL数据库 分类: SQL Server 2015-03-05 08:52 227人阅读 评论(0) 收藏

    任务:把服务器1上的SQL数据库自动备份到服务器2上,命名格式=数据库名+年月日+小时. 说明: 服务器2=>192.168.0.22 数据库名=>Book 共享文件夹路径:192.168 ...

随机推荐

  1. HTML页面关键词随机分布布局

    结合underscore-min.js,和D3.js 绘制HTML关键词随机分布 <!DOCTYPE html> <html> <head> <meta ch ...

  2. 转:sql之left join、right join、inner join的区别

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

  3. PhpExcel笔记,phpExcel中文帮助手册

    下面是总结的几个使用方法 include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel2007.php'; //或者include 'PHPExcel/ ...

  4. js原生的url操作函数,及使用方法。(附:下边还有jquery对url里的中文解码函数)

    js原生的url操作函数,完善的. /*****************************/ /* 动态修改url */ /*****************************/ var ...

  5. [猜数字]把两个数和告诉A,积告诉B,求这两个数是什么

    1-20的两个数把和告诉A,积告诉B,A说不知道是多少,B也说不知道,这时A说我知道了,B接着说我也知道了,问这两个数是多少? 分析: 设和为S,积为M. 首先,A:我不知道. 说明:S可以分解成多个 ...

  6. jenkins gitlab整合注意事项

    jenkins整合gitlab时,Source Code Management添加gitlab仓库路径无论怎么尝试都报如下两个异常: Failed to connect to repository : ...

  7. Java使用for循环打印乘法口诀(正倒左右三角形)

    代码1: public void test1(){ for(int i = 1; i < 10 ; i ++){ for(int k = 1; k < i ; k ++){ System. ...

  8. Selenium FF WebDriver运行时开启firebug的2种方式

    上一次我实测FF webdriver 加载firefoxhttp://www.cnblogs.com/tobecrazy/p/3997375.html 那么问题就来了,既然能加载firebug能否在运 ...

  9. windows配置nginx实现负载均衡集群

    windows配置nginx实现负载均衡集群2014-08-20 09:44:40   来源:www.abcde.cn   评论:0 点击:617 网上大部分关于nginx负载均衡集群的教程都是lin ...

  10. Django~urls.py--->views.py

    The 'r' in front of each regular expression string is optional but recommended. It tells Python that ...