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

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

举例 :(本地)服务器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.新建作业

0c050b22f4ffd3f226cda8003c97e14a.png

2.新建步骤

98b95a7c70bbb5b1457a5adc0f8151fb.png

4df787c392bb9c8a373a7ef7dbf03370.png

3.新建计划

17ada2432340fac1f80417d7f1fd7473.png

d39e3eac3e15352eabab885cbed9d7b7.png

若执行存储过程报错: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

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

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

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

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

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

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

Linux两台服务器上互传文件

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

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

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

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

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

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

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

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

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

mysql数据库从一台服务器迁移到另一台服务器上

一.应用场景      由于要把测试服务器上的数据库迁移到正式服务器上,因此需要做数据库的迁移.这里记录一下. 二.数据库迁移1.新建数据库test create database test;12.进 ...

随机推荐

Github入门(一)

之前早就听说过Git的大名,但由于合作项目时的团体都非常小,所以一直没有开始系统的学习和使用(其实就是懒!),最近终于有动力开始进行入门的学习. 首先介绍一下自学用书:https://git-scm. ...

iOS开发中的错误整理,(百思项目,指示器位置)设置控件尺寸和点坐标,先设置尺寸,再设置点坐标

之前对控件的尺寸和点的坐标的设置从来都是想到什么写什么,从来没有关心过顺序.然后就有了这次的血的教训!!!!! 下面是错误的截图,先设置的中心点,然后设置的宽度.程序运行就这样了,点别的没有毛病!!! ...

Extjs关于FormPanel布局

Extjs关于FormPanel布局 FormPanel有两种布局:form和column,form是纵向布局,column为横向布局.默认为后者.使用layout属性定义布局类型.对于一个复杂的布局 ...

GetSurfaceLevel

if( SUCCEEDED( g_pTexture->GetSurfaceLevel( 0, &pSurface) ) )    {        pd3dDevice->Se ...

Linux内核源代码情景分析系列

http://blog.sina.com.cn/s/blog_6b94d5680101vfqv.html Linux内核源代码情景分析---第五章 文件系统  5.1 概述 构成一个操作系统最重要的就 ...

《Unbroken》

献给正在奋力向前的你 You can’t connect the dots looking forward, you can only connect them lo ...

005 使用SpringMVC开发restful API三--处理创建请求

一:主要任务 1.说明 @RequestBody 映射请求体到java方法的参数 日期类型参数的处理 @Valid注解 BindingResult验证请求参数的合法性并处理校验结果 二:@Reques ...

[c++]base64编解码 and image

//½«Í¼ÏñתΪbase64¸ñʽ vector vecImg; //Mat ͼƬÊý¾Ýת»»Îªvector vector&lt ...

javascript基础拾遗(十三)

1.jQuery的特点 jQuery是目前非常流行的javascript库,理念是"Write Less,Do More" 1)消除浏览器差异 2)简洁的操作DOM方法 3)轻松实 ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值