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

方案介绍:

第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

参考文章:http://www.cnblogs.com/wjj327342306/p/4568177.html

定时备份SQL SERVER的数据库并且把备份文件复制到另外一台服务器的更多相关文章

  1. 定时备份SQL Server数据库

    一.手动备份: 1.整个数据库备份:选择数据库 => 右键任务 => 备份: 2.导出一张表的框架:选择表 => 编写表脚本为 => CREATE到: 3.导出一张表的数据:  ...

  2. 备份SQL SERVER 2005数据库

  3. SQL Server附加数据库错误5120处理方法

    SQL Server附加数据库5120错误 当我们从另外一台服务器复制过来的数据库,可能会有如下错误: 解决方法 1.给数据库所在文件夹增加用户Everyone并赋予完全控制权限 2.以管理员身份运行 ...

  4. 通过SQL Server 2008数据库复制实现数据库同步备份

    SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行 实时数据同步,正常情况下只使用主 ...

  5. SQL server 2008数据库的备份与还原、分离(转)

    SQL server 2008数据库的备份与还原.分离(转)   一.SQL数据库的备份: 1.依次打开 开始菜单 → 程序 → Microsoft SQL Server 2008 → SQL Ser ...

  6. SQL Server系统数据库备份最佳实践

    原文:SQL Server系统数据库备份最佳实践 首先了解主要的系统数据库: 系统数据库 master 包含登录信息和其他数据库的核心信息 msdb 存储作业.操作员.警报.备份还原历史.数据库邮件信 ...

  7. SQLServer2008修改sa密码的方法与SQL server 2008数据库的备份与还原

    sa密码的修改转载自:http://blog.csdn.net/templar1000/article/details/20211191 SQL server 2008数据库的备份与还原转自 :htt ...

  8. SQL Server 2008数据库备份和还原(还原是必须有完整备份)

    转自lwccc, SQLserver2008数据库备份和还原问题(还原是必须有完整备份) 首先,我要说明的是你必须拥有完整的数据库备份,下面的还原教程,才算有用. 这个连接是某高手的异常恢复方法, 实 ...

  9. 【转】通过SQL Server 2008数据库复制实现数据库同步备份

    SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行实时数据同步,正常情况下只使用主数 ...

随机推荐

  1. python爬虫学习-爬取某个网站上的所有图片

    最近简单地看了下python爬虫的视频.便自己尝试写了下爬虫操作,计划的是把某一个网站上的美女图全给爬下来,不过经过计算,查不多有好几百G的样子,还是算了.就首先下载一点点先看看. 本次爬虫使用的是p ...

  2. js弹出框,禁刷新

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Dreamweaver的代码与设计简单结合的运用

    首先在设计里面写好自己需要的内容,在文字设置中,选中要设置的文字,然后点击属性栏的css,把目标规则改为新内联样式,然后在改变字体的大小颜色样式,然后在代码里面根据需要再修改: 图片插入是在菜单栏点击 ...

  4. iOS:选择器控件UIPickerView的详解和演示

    选择器控件UIPickerView: 功能:它能够创建一个类似于密码锁式的单列或多列的选择菜单,用户可以通过它设置的代理来选择需要菜单中的任意的数据.例如创建日历.字体表(类型.大小.颜色).图库等. ...

  5. Nginx 安装

    1 编译环境 yum -y groupinstall "Development Tools" "Server Platform Development"   2 ...

  6. scp使用

    从82服务器复制文件 scp -P 50028 -r root@***.**.**.82:/data/upload.tar / -P:指定非ftp22端口

  7. 百度富文本编辑器UEDITOR

    前言 http://jingyan.baidu.com/article/a948d65108d7fa0a2dcd2e8d.html 配置<a>测试啊</a>.net mvc4项 ...

  8. Python之路----------迭代器

    直接用作于for循环的数据类型有以下几种: 1.集合类的数据类型:list tuple dict set str等 2.生成器generator,包括生成器和带有yiled 的generator fu ...

  9. HTML5 video标签播放视频下载原理

    HTML5 video https://github.com/remy/html5demos/blob/master/demos/video.html <video preload=" ...

  10. Dapper

    前一段做一个技术分享关于dapper的,现在再总结一下,也好长时间没有更新博客了--,用到的东西 Dapper.AutoFac .AutoMapper.FluentValidation: 下面说一下D ...