MS SQL数据批量备份还原(适用于MS SQL 2005+) 分类: SQL Server 数据库 2015-03-10 14:32 103人阅读 评论(0) 收藏
2015-03-10 14:32
573 查看
我们知道通过Sql代理,可以实现数据库的定时备份功能;当数据库里的数据库很多时,备份一个数据库需要建立对应的定时作业,相对来说比较麻烦;
还好,微软自带的osql工具,比较实用,通过在命令行里里输入命令,也能实现数据库备份的功能;如果能通过sql语句来生成一个批处理文件,那就方便了;
下面即是生成批处理文件的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 = 'E:\05_DataBase_bakup\' --数据库服务器 SET @dbServer = '.' --数据库用户名 SET @dbUserName = 'sa' --数据库用户密码 SET @dbUserPwd = '123' 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) --数据库备份文件存放路径 SET @path = 'E:\05_DataBase_bakup\' --数据库还原后的文件存放路径 SET @restorePath = 'E:\db2008\' --还原到的数据库服务器 SET @dbServer = '192.168.0.7,1501\SQL2008' --还原到的数据库用户名 SET @dbUserName = 'netuser' --还原到的数据库用户密码 SET @dbUserPwd = 'netuser2008' DECLARE cursors CURSOR FOR --查询集合 --注意:这里将数据库文件的物理路径替换掉了一部分,只保留数据库名称 SELECT [name], REPLACE (REPLACE(FILENAME, 'E:\01.数据库\', ''), '.mdf', '') AS [fileName] FROM [sysdatabases] WHERE NAME NOT IN ('master', 'tempdb', 'model', 'msdb') OPEN cursors FETCH NEXT FROM cursors INTO @name,@fileName WHILE @@fetch_status = 0 BEGIN --遍历集合 PRINT 'osql -S ' + @dbServer + ' -U ' + @dbUserName + ' -P ' + @dbUserPwd + ' -Q "RESTORE DATABASE [' + @name + '] FROM DISK = ''' + @path + @name + '.bak'' WITH FILE = 1, MOVE N''' + @fileName + ''' TO N''' + @restorePath + @name + '.mdf'', MOVE N''' + @fileName + '_log'' 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+) 分类: SQL Server 数据库 2015-03-10 14:32 104人阅读 评论(0) 收藏
- MS SQLServer 批量附加数据库 分类: SQL Server 数据库 2015-07-13 11:12 30人阅读 评论(0) 收藏
- MS SQL 合并结果集并求和 分类: SQL Server 数据库 2015-02-13 10:59 93人阅读 评论(0) 收藏
- 修改MS SQL忽略大小写 分类: SQL Server 数据库 2015-06-19 09:18 34人阅读 评论(0) 收藏
- 使用sys无法通过sqlplus或者sqldeveloper连接数据库 分类: H2_ORACLE 2013-02-04 14:02 600人阅读 评论(0) 收藏
- 常用数据库 JDBC URL 格式 分类: Java 2011-01-19 14:55 21582人阅读 评论(1) 收藏 举报 jdbcurl数据库teradatasqlservermicroso
- SQL 计算两个时间之差 分类: SQL Server 2014-07-04 10:57 119人阅读 评论(0) 收藏
- SQL对程序性能的影响 分类: 数据库 2009-11-14 04:06 327人阅读 评论(0) 收藏
- SQL 存储过程 分页 分类: SQL Server 2014-05-16 15:11 449人阅读 评论(0) 收藏
- Transact-SQL 常用函数 分类: SQL Server 2015-02-03 09:47 284人阅读 评论(0) 收藏
- sql 视图 按where条件多个字段取一个 分类: SQL Server 2014-12-01 14:09 308人阅读 评论(0) 收藏
- winform Execl数据 导入到数据库(SQL) 分类: WinForm C# 2014-05-09 20:52 191人阅读 评论(0) 收藏
- SQL ID自增列从1开始重新排序 分类: SQL Server 2014-05-19 14:46 652人阅读 评论(0) 收藏
- MS SQL 合并结果集并求和 分类: SQL Server 数据库 2015-02-13 10:59 92人阅读 评论(0) 收藏
- MySQL、MS SQL、Oracle三种数据库查询M到N行数据 分类: 数据库 2009-11-10 23:33 688人阅读 评论(0) 收藏
- 修改MS SQL忽略大小写 分类: SQL Server 数据库 2015-06-19 09:18 33人阅读 评论(0) 收藏
- SQL 存储过程 通过多个ID更新数据 分类: SQL Server 2014-12-08 16:08 299人阅读 评论(0) 收藏
- SQL 按月统计(两种方式) 分类: SQL Server 2014-08-04 15:36 154人阅读 评论(0) 收藏
- 使用SQLiteHelper创建数据库并插入数据 分类: H1_ANDROID 2013-11-05 22:44 1398人阅读 评论(0) 收藏
- dm642的视频口输出 分类: DSP 2013-09-10 14:32 684人阅读 评论(0) 收藏