原文:https://www.cnblogs.com/jaday/p/6088200.html

需求介绍:每天备份线上正式库并且把备份文件复制到测试服务器,测试服务器自动把数据库备份文件还原。

方案介绍:

第1步:在正式库上创建存储过程用来备份数据库和复制到测试服务器,然后新建作业每天定时执行创建的存储过程。

第2步:在测试服务器数据库上创建存储过程用来还原数据库,然后新建作业每天定时执行创建的存储过程。

准备:

在正式服务器上共享备份文件的文件夹,并且给文件夹everyone的权限。

在测试服务器上创建共享文件夹,并且给文件夹everyone的权限。

正式库备份数据库和复制数据库代码:

--开启 xp_cmdshell
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
go
USE [master]
GO
/****** Object: StoredProcedure [dbo].[backup_db_ksedu] Script Date: 11/22/2016 08:41:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO --备份数据库
Create proc [dbo].[backup_db_ksedu] as Declare @strPsw varchar(50) Declare @strUsr varchar(50) Declare @strCmdShell varchar(300) Declare @strDataBaseName varchar(20) Declare @FullFileName Varchar(200) Declare @FullFileName1 Varchar(200) Declare @FullFileName2 Varchar(200) Declare @FileFlag varchar(50) Declare @FileFlag2 varchar(50) DECLARE @FileFlag3 varchar(50) Declare @ToFileName varchar(200) Declare @SQLStr varchar(500) Declare @SQLStr2 varchar(500) Declare @SQLStr3 varchar(500) Declare @FlagDel varchar(20) --定义备份的数据库名称 Set @strDataBaseName='数据库名' --定义本地备份文件的名称 Set @FileFlag=@strDataBaseName + '_db_' + replace(convert(char(20),getdate(),112),' ','') --定义本地1天前的备份文件名称 --Set @FileFlag3=@strDataBaseName + '_db_' + replace(convert(char(20),getdate()-1,112),' ','') --定义远程服务器3天前的备份文件名称 --Set @FileFlag2=@strDataBaseName + '_db_' + replace(convert(char(20),getdate()-3,112),' ','') --设置远程服务器的登录域和用户名 Set @strUsr='ZONGHEGUANLI-SQ\Administrator' --设置远程服务器登录密码 Set @strPsw='abc123' --设置远程服务器连接 Set @strCmdShell= 'net use \\xx.xxx.x.xxx\db_backup ' + @strPsw + ' /user:' +@strUsr --设置本地备份文件名称 Set @FullFileName='e:\bak\'+@FileFlag+'.bak' --设置本地1天前的备份文件名称 --set @FullFileName1='D:\Backup\'+@FileFlag3+'.bak' --设置远程服务器3天前的备份文件名称 --set @FullFileName2='\\172.17.1.10\j$\db_backup\'+@FileFlag2+'.BAK' --设置远程服务器保存备份文件目录 Set @ToFileName='\\xx.xxx.x.xxx\db_backup\' --Set @ToFileName='e:\Backup\' --设置为True时,即删除备份,设置为False时,即不删除备份文件 --Set @FlagDel='False' --设置从本地复制备份文件至远程服务器的语句 Set @SQLStr='copy '+@FullFileName+' '+@ToFileName --设置删除本地1天前的备份文件 --Set @SQLStr2='del ' +@FullFileName1 --设置删除远程服务器3天前的备份文件 --Set @SQLStr3='del ' +@FullFileName2 --备份数据库 压缩备份 BACKUP DATABASE @strDataBaseName TO DISK = @FullFileName WITH INIT, STATS = 20 --连接远程服务器 exec master..xp_cmdshell @strCmdShell --复制备份文件至远程服务器 exec Master..xp_cmdshell @SQLStr --删除1天前本地的备份文件 --if (@FlagDel ='True') --exec master.. xp_cmdshell @SQLStr2 ----删除3天前远程服务器备份文件 --if (@FlagDel ='True') --exec master.. xp_cmdshell @SQLStr3

测试库还原数据库代码:

USE [master]
GO
/****** Object: StoredProcedure [dbo].[restore_db_ksedu] Script Date: 11/22/2016 08:40:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO ALTER PROCEDURE [dbo].[restore_db_ksedu]
AS Declare @strDataBaseName varchar(50)
Declare @FileFlag varchar(50) --定义备份的数据库名称
Set @strDataBaseName='数据库名' Set @FileFlag='d:\db_backup\'+@strDataBaseName + '_db_' + replace(convert(char(20),getdate(),112),' ','')+'.bak' --加上这句防止数据库正在使用导致执行不成功
ALTER DATABASE [数据库名] SET OFFLINE WITH ROLLBACK IMMEDIATE restore database [数据库名]
from disk=@FileFlag with file=1,
REPLACE,
recovery ALTER database [数据库名] set online

创建作业计划:参考 http://wenku.baidu.com/link?url=HLojwfVr1gkEuKjhk3Twsy7SxTWNMxovLg4LXpqvg_a3r50XQE5hZt8e03uPhbW8qUNjEx0IKa39DjyJ0spuNN1TV42UCIAMNDUQllhjsZu

 

SQL SERVER 数据库跨服务器备份的更多相关文章

  1. sql server 数据库跨服务器备份,复制监视器——快照代理,复制流程

    在做数据库跨服务器复制时,查看复制监视器的快照代理,可以看到复制流程,具体如下: 初始化 连接发布服务器 设置服务器数据库兼容性级别 更新索引的统计信息 在生成快照时锁定已发布的表 复制快照数据(每个 ...

  2. SQL Server数据库设置自动备份策略

    一. 简单介绍 SQL Server自带的维护计划是一个非常有用的维护工具,能够完成大部分的数据库的维护任务. 数据库的备份也是日常工作中非常重要的一个环节.备份的方法非常的多. 今天给大家介绍最简单 ...

  3. SQL Server数据库定时自动备份

    SQL Server 数据库定时自动备份[转]   在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求 ...

  4. SQL Server 数据库定时自动备份

    原文:SQL Server 数据库定时自动备份 SQL Server 数据库定时自动备份——每天定时备份,保留前8天的备份 利用SQL Server代理新建作业来定期备份 1)在数据库库的[SQL S ...

  5. (后台)SQL Server 数据库定时自动备份(转)

    转自博客园: SQL Server 数据库定时自动备份[转]   在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以 ...

  6. 如何使用SQL SERVER数据库跨库查询

    SQL Server中内置了数据库跨库查询功能,下面简要介绍一下SQL Server跨库查询.首先打开数据源码:OPENDATASOURCE不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分 ...

  7. [转]SQL Server 数据库定时自动备份

    前提:在使用下面的备份方式之前需要确保你的Sqlserver Agent服务启动,切设置为自动启动.否则当你服务器重启了但是Agent服务没有启动,那么自动备份任务就不会执行 (一)使用TSql代码自 ...

  8. SQL Server 数据库定时自动备份【转】

    在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库.要实现数据库的定 ...

  9. SQL Server 数据库定时自动备份(转)

    本文转载自:http://www.cnblogs.com/zhangq723/archive/2012/03/13/2394102.html 作者:清风寻梦 在SQL Server中出于数据安全的考虑 ...

随机推荐

  1. html的a链接的href怎样才另起一个页面,一个页面调到另一个html页面

    在后面加上target ="_blank",就可以,正如: <ul class="nav navbar-nav navbar-right" style=& ...

  2. CSS盒子模型中的Padding属性

    CSS padding 属性 CSS padding 属性定义元素边框与元素内容之间的空白区域,不可见.如果想调整盒子的大小可以调整内容区,内边距,边框. CSS padding 属性定义元素的内边距 ...

  3. php日志托管给apache处理

    php.ini配置: log_errors = On;不显示错误display_startup_errors = Offdisplay_errors = Off ;除了notice级别错误外,报告所有 ...

  4. Internet History, Technology, and Security(week9)——Web Security

    Secure Web Connections: Security Public/Private Key - Secure Sockets 凯撒密码容易被破解,后来人们发明了公钥和私钥,由于私钥一定是要 ...

  5. Windows server 2003+IIS6+PHP5.4.45环境搭建教程

    今天试了一下升级到PHP 5.4.45,但是却发现了不少问题.在以前PHP 5.2.X中,只需要使用php5isapi.dll的方式就可以,但在PHP 5.3以后却不再支持ISAPI模式了,也没有此文 ...

  6. 解决:@Auarowired为null

    使用@Auarowired时程序报空指针.如图: 将private 更改为 public 即可

  7. 【转】Java MySQL数据类型对照

    Java MySQL数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.S ...

  8. jQuery easing动画效果扩展

    引入Easing js文件 <script src="js/jquery.min.js"></script> <script src="js ...

  9. percona-toolkit 工具介绍

    percona-toolkit 工具介绍 percona-toolkit 是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务.这些任务包括: 检查master和s ...

  10. FlexPaper做的类似百度文库的效果

    这里有个误区,虽然我的截图这里有个FlexPaperViewer.swf,   但是这个文件还是要放在网站根目录一个. <%@ Page Language="C#" Auto ...