前言

因工作需要将数据库每日备份至服务器本地磁盘和其他服务器磁盘,对网上的例子进行改造,解决了SQL server数据库备份的问题。

一、将指定数据库备份到本地

将数据库affair_stydy全备份至服务器H盘的AutoBackup文件夹下,实例如下:

DECLARE
@NAME VARCHAR(250)
SET @NAME='H:\AutoBackup\affair_stydy_'+ CONVERT(VARCHAR(50),GETDATE(),112)+'.bak'
BACKUP DATABASE[affair_stydy]TO DISK=@NAME WITH NOFORMAT, NOINIT,
NAME = N'affair_stydy_完整 数据库 备份',
SKIP, NOREWIND, NOUNLOAD

二、将指定数据库备份至其他服务器

将数据库affair_stydy全备份至10.10.56.43服务器的任意盘的AutoBackup文件夹下,实例如下:

注意:在目标服务器任意盘符创建AutoBackup文件夹,开启共享并设置权限为Everyone 完全控制,可能会受360、防火墙、cmd.exe的运行账户 等因素的影响。

--如果xp_cmdshell没有启用,请先启用
sp_configure 'show advanced options',1
RECONFIGURE
GO
sp_configure 'xp_cmdshell',1
RECONFIGURE
GO
--1.先创建映射
--EXEC MASTER.dbo.xp_cmdshell 'net use  \\服务器IP\共享文件夹  用户密码   /user:服务器IP\登录用户名'
EXEC MASTER.dbo.xp_cmdshell 'net use \\10.10.56.43\AutoBackup l;'' /user:10.10.56.43\Administrator'
--2.利用映射备份数据库
BACKUP DATABASE affair_stydy to disk='\\10.10.56.43\AutoBackup\affair_stydy.bak'
--3.删除映射
EXEC MASTER.dbo.xp_cmdshell 'net use \\10.10.56.43\AutoBackup /delete'

三、同时将数据库备份到服务器本地和其他服务器指定磁盘

将一、二进行整合,实现能同时备份数据库到服务器本地磁盘和其他服务器磁盘,实例如下:

--如果xp_cmdshell没有启用,请先启用
sp_configure 'show advanced options',1
RECONFIGURE
GO
sp_configure 'xp_cmdshell',1
RECONFIGURE
GO
DECLARE
@DatabaseName VARCHAR(100) --要备份的数据库名
,@Local_File_path VARCHAR(500) --本地备份路径
,@Server_Name VARCHAR(20) --目标服务器IP
,@Server_File_path VARCHAR(500) --目标服务器备份路径
,@User VARCHAR(100) --目标服务器登录用户名
,@Pwd VARCHAR(100) --目标服务器登录密码
,@Link VARCHAR(200) --链接字符串
BEGIN
--参数设定
SET @DatabaseName='affair_stydy';
SET @Local_File_path='''H:\AutoBackup\'+@DatabaseName+CONVERT(VARCHAR(50),GETDATE(),112)+'.bak''';
SET @Server_Name='10.10.56.43';
SET @Server_File_path='''\\'+@Server_Name+'\AutoBackup\'+@DatabaseName+CONVERT(VARCHAR(50),GETDATE(),112)+'.bak''';
SET @User='Administrator';
SET @Pwd='l;'''; --一、备份到本地
EXEC('BACKUP DATABASE '+@DatabaseName+' TO DISK ='+@Local_File_path); --二、备份到其他服务器
--1.先创建映射
SET @Link='net use \\'+@Server_Name+'\AutoBackup '+@Pwd+' /user:'+@Server_Name+'\'+@User+'';
EXEC MASTER.dbo.xp_cmdshell @Link; --2.利用映射备份数据库
EXEC('BACKUP DATABASE '+@DatabaseName+' TO DISK ='+@Server_File_path);
--3.删除映射
SET @Link='net use \\'+@Server_Name+'\AutoBackup /delete';
EXEC MASTER.dbo.xp_cmdshell @Link;
END

四、备份机制

可根据实际需要创建作业每日或指定时间段执行上述各代码块的内容,实现不同类型的数据库备份。

SQL server 数据库备份至服务器本地磁盘和其他服务器磁盘的更多相关文章

  1. (图解版)SQL Server数据库备份与还原

        本文介绍了SQL Server数据库备份的两种方式.一种是直接拷贝数据库中的文件mdf 和日志文件ldf,另一种是生成脚本语言. 第一种方式:     选中需要备份的数据库,将数据库从运行的数 ...

  2. SQL Server数据库备份的镜像

    SQL Server数据库备份的镜像 一个完整备份可以分开镜像 USE master GO BACKUP DATABASE [testdatabase] TO DISK = N'C:\testdata ...

  3. SQL Server数据库备份:通过Windows批处理命令执行

    通过Windows批处理命令执行SQL Server数据库备份 建立mybackup.bat ,输入以下内容直接运行该脚本,即可开始自动备份数据库也可把该脚本加入windows任务计划里执行. --- ...

  4. SQL Server数据库备份(本机)

    基础的SQL Server数据库备份存储过程 /**************************************************************************** ...

  5. SQL server数据库备份还原问题备忘(亲测有效)

    问题一:SQL server数据库备份还原方法 http://www.cnblogs.com/zgqys1980/archive/2012/07/04/2576382.html 问题二:无法执行 BA ...

  6. sql server数据库备份单个表的结构和数据生成脚本

    1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...

  7. sql server 数据库备份历史记录

    sql server 数据库备份历史记录 SELECT ),SERVERPROPERTY('Servername'))AS Server, bs.database_name, bs.backup_st ...

  8. sql server数据库备份单个表的结构和数据生成脚本【转】

    1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...

  9. SQL Server数据库备份&还原

    一.备份 1.登录数据库 2.找到要还原的数据库 右键-任务-备份-添加(路径只写一个,刚开始二个总是报错)-确定 二.还原数据库 这个之间报错了二次 1.报错1:备份集中的数据库与现有数据库“XXX ...

随机推荐

  1. c# 定时器 自动执行

    //下面讲一个打开窗体定时执行按钮的东西 private void Form1_Load(object sender, EventArgs e) { System.Timers.Timer pTime ...

  2. Somethings about Floors题解

    题目内容:一个楼梯有N级(N >=0), 每次走1级或2级, 从底走到顶一共有多少种走法? 输入要求:只有一行输入,并且只有一个数N(如果N > 20,则N = N%21,即保证N的范围控 ...

  3. Web开发者应掌握的12个Firebug技巧

    来源: 廖煜嵘 相信很多从事Web开发工作的开发者都听说和使用过Firebug,但可能大部分人还不知道,其实它是一个在网页设计方面功能相当强大的编辑器,它 可以对HTML.DOM.CSS.HTTP和J ...

  4. 解决Unsupported major.minor version 51.0报错问题

    问题产生原因:计算机环境变量的jdk版本与eclipse使用的jdk版本不一致 解决方法: 1.查看计算机环境变量的jdk版本 2.查看eclipse项目java compiler的方法:在项目点右键 ...

  5. ThreadLocal使用,应用场景,源码实现,内存泄漏

    首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的.各 ...

  6. springMVC 中 ajax get 请求和 post 请求的坑以及参数传递

    1, ajax 请求 无论为 post ,或者 get ,url中带有?形式的参数,后台都能以String类型变量接收,变量名称和参数名称必须一致 前台ajax: $.ajax( "prod ...

  7. java+spring 执行器

    A 通过MethodInvokingJobDetailFactoryBean类实现 spring配置文件里增加执行器配置 <bean id="ammoDue" class=& ...

  8. perl在linux下通过date获取当前时间

    perl处理文件的时候最好添加上 处理的时间戳,获取系统的时间又多种方法,但是反引号是最原始的,不需要其他外界条件和lib的支持. my $now = `date "+%F %T" ...

  9. 覆盖alert对话框-自制Jquery.alert插件

    Javascript 代码: (function ($) { 'use strict'; window.alert = $.alert = function (msg) { var defaultOp ...

  10. App Store上的开源应用汇总

    以下是互联网上主要的开源iOS应用的列表,在学习的时候,多看看完成的功能代码可以给我们带来很多经验,但是除了Apple官方提供的Sample Code之外,我们很难找到优质的开源项目代码,所以我搜集了 ...