数据库同时备份到两台服务器上(并自动删除过期文件)

举例 :(本地)服务器A: IP :192.168.1.1

(远程)服务器B: IP :192.168.1.2

数据库版本:SqlServer2008R2

一.   两台服务器分别创建共享文件夹(能互相访问,同属一个局域网)

A: E: IWFSBACKUP(文件夹)

B: E: IWFSBACKUP(文件夹)

二.   在master数据库下建立存储过程 dbo.iwfsbackup

USE [master]

GO

/****** Object:  StoredProcedure [dbo].[iwfsbackup]    Script Date: 07/17/2018 09:57:27 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE proc [dbo].[iwfsbackup]

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='db_iwfs'

 --定义本地备份文件的名称

 Set @FileFlag=@strDataBaseName + '_db_' + replace(convert(char(20),getdate(),112),' ','')

 --定义本地3天前的备份文件名称

 Set @FileFlag3=@strDataBaseName + '_db_' + replace(convert(char(20),getdate()-3,112),' ','')

 --定义远程服务器3天前的备份文件名称

 Set @FileFlag2=@strDataBaseName + '_db_' + replace(convert(char(20),getdate()-3,112),' ','')

 --设置远程服务器的登录域和用户名

 Set @strUsr='B\administrator'

 --设置远程服务器登录密码

 Set @strPsw=''

 --设置远程服务器连接

 Set @strCmdShell= 'net use \\192.168.1.2\e$ ' + @strPsw + ' /user:' +@strUsr

 --设置本地备份文件名称

 Set @FullFileName='E:\IWFSBACKUP\'+@FileFlag+'.BAK'

 --设置本地3天前的备份文件名称

 set @FullFileName1='E:\IWFSBACKUP\'+@FileFlag3+'.BAK'

 --设置远程服务器3天前的备份文件名称

 set @FullFileName2='\\192.168.1.2\e$\IWFSBACKUP\'+@FileFlag2+'.BAK'

 --设置远程服务器保存备份文件目录

 Set @ToFileName='\\192.168.1.2\e$\IWFSBACKUP\'

 --设置为True时,即删除备份,设置为False时,即不删除备份文件

 Set @FlagDel='True'

 --设置从本地复制备份文件至远程服务器的语句

 Set @SQLStr='copy '+@FullFileName+' '+@ToFileName

 --设置删除本地3天前的备份文件

 Set @SQLStr2='del ' +@FullFileName1

 --设置删除远程服务器3天前的备份文件

 Set @SQLStr3='del ' +@FullFileName2

 --备份EliteUC数据库

 BackUp DataBase  @strDataBaseName  To Disk=  @FullFileName   with init

 --连接远程服务器

 exec master..xp_cmdshell @strCmdShell

 --复制备份文件至远程服务器

 exec Master..xp_cmdshell @SQLStr  

 --删除3天前本地的备份文件

 if (@FlagDel ='True')

 exec master.. xp_cmdshell @SQLStr2

 --删除3天前远程服务器备份文件

 if (@FlagDel ='True')

 exec master.. xp_cmdshell @SQLStr3

--作业调用该存储过程

execute master.dbo.iwfsbackup

--DOS拷贝文件到别的服务器

copy E:\IWFS\.txt  \\192.168.1.2\IWFSBACKUP

三.   新建SqlServer作业,调用存储过程,执行备份作业

1.新建作业

2.新建步骤

3.新建计划

若执行存储过程报错:execute master.dbo.iwfsbackup

“消息 15281,级别 16,状态 1,过程 xp_cmdshell,第 1 行
SQL  Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell'  的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 
'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器". ”

解决办法:

在master 数据库下执行以下语句:

sp_configure 'show advanced options',1

reconfigure

go

sp_configure 'xp_cmdshell',1

reconfigure

go

SqlServer数据库同时备份到两台服务器上(并自动删除过期文件)的更多相关文章

  1. SQL Server2005 两台服务器上的数据库互相同步(转载)

    1.1测试环境 Item 发布机 A 订阅机 B OS Windows 2003 Server Windows 2003 Server SQL SQL Server 2005 企业版 SQL Serv ...

  2. SQL Server2005 两台服务器上的数据库同步(转载)

    1.1测试环境 Item 发布机 A 订阅机 B OS Windows 2003 Server Windows 2003 Server SQL SQL Server 2005 企业版 SQL Serv ...

  3. rsync 实现文件同步 (重要数据通过rsyncr把数据同步到不同的两台服务器上,这样可以防止服务器的硬盘故障导致数据丢失) 客户端同步时如果要排某个目录

    rsync是unix系统下的数据镜像 备份工具,一般linux系统都 自带: # rpm -qa|grep rsync rsync-3.0.9-17.el7.x86_64 服务器端:10.100.0. ...

  4. Linux两台服务器上互传文件

    主服务器:192.168.100.30: 文件所在服务器:192.168.100.31: 1. 在主服务上拷贝文件: #scp root@192.168.100.31:/home/a.txt /hom ...

  5. SQLServer自动备份和自动删除过期文件

    以下为转载的文章: 点击下一步: 自定义名称和说明,点击更改: 点击确定,下一步 1.备份: 选择备份,下一步,再下一步,选择需要备份的数据库: 选择备份文件存放的路径: 点击下一步,选择系统产生的报 ...

  6. 记sql server 2008R2 两台服务器 使用非默认端口的发布订阅

    最近研究数据库的复制.因为要在两台服务器上,当使用数据库的默认1433端口时,订阅发布没有任何问题,考虑到数据库的安全性问题,需要改用其他端口.这里以10010为例. 有A.B两台服务器:A作为发布服 ...

  7. 将Oracle数据库数据每天备份恢复一次数据到另一台服务器上两份数据

    1.创建用户,授权,创建测试数据 创建用户 CREATE USER test identified by 123; 授权 grant dba to test; 创建测试数据 create table ...

  8. mysql 忘记密码,赋予用户权限,两台服务器的数据库之间快速导入

    mysql 忘记密码: 1.首先service mysql stop mysqld --skip-grant-tables &  开启数据库 然后就可以mysql -uroot 直接进数据库, ...

  9. 如何在一台服务器上安装两个mysql或者更多

    如何在一台服务器上安装两个mysql 1       前言 上篇写了在一台机器上源码编译安装一个mysql,那么如何在一台机器上源码编译安装两个mysql或者更多呢? 2       环境 mysql ...

随机推荐

  1. CloseableHttpClient(二)

    package com.cmy.httpClient; import java.io.IOException; import org.apache.http.HttpEntity; import or ...

  2. java程序员从ThinkPad到Mac的使用习惯改变

    https://blog.csdn.net/yczz/article/details/49993417

  3. Java图形化界面设计——布局管理器之GridBagLayout

    GridBagLayout 不会随着窗口的变化标签随之发生变化,可固定. ---------------------------------------------------------- impo ...

  4. PAT 1052 卖个萌 (20)(代码+思路)

    1052 卖个萌 (20)(20 分) 萌萌哒表情符号通常由"手"."眼"."口"三个主要部分组成.简单起见,我们假设一个表情符号是按下列格 ...

  5. 类方法 isAssignableFrom、instanceof 和 asSubclass

    类方法 isAssignableFrom.instanceof 和 asSubclass Spring 框架 CollectionFactory 的 asEnumType 方法使用 "类.a ...

  6. 06 数据库入门学习-视图、sql注入、事务、存储过程

    一.视图 1.什么是视图 视图本质是一张虚拟的表 2.为什么要用 为了原表的安全 只要有两大功能 1.隐藏部分数据,开放指定数据 2.视图可以将查询结果保存,减少sql语句的次数 特点: 1.视图使用 ...

  7. KbmMW 服务器架构简介

    kbmmw 由于文档比较少,很多同学开始用时很难理解.一直准备写一个关于kbmmw 架构的东西. 这几天与红鱼儿(blog)研究服务器线程时,整理了一下,大概画了一下kbmmw (版本4.5)服务器的 ...

  8. 2018.09.19 atcoder AtCoDeer and Rock-Paper(贪心)

    传送门 sb贪心啊. 显然能选帕子就选帕子. 首先假设第一个人全出石头. 考虑把一些石头修改成帕子. 这样贡献只增不减,加起来就是答案. 代码: #include<bits/stdc++.h&g ...

  9. 2018.09.14 洛谷P3567 [POI2014]KUR-Couriers(主席树)

    传送门 简单主席树啊. 但听说有随机算法可以秒掉%%%(本蒟蒻并不会) 直接维护值域内所有数的出现次数之和. 当这个值不大于区间总长度的一半时显然不存在合法的数. 这样在主席树上二分查值就行了. 代码 ...

  10. hadoop学习笔记(二):centos7三节点安装hadoop2.7.0

    环境win7+vamvare10+centos7 一.新建三台centos7 64位的虚拟机 master node1 node2 二.关闭三台虚拟机的防火墙,在每台虚拟机里面执行: systemct ...