须事先准备一个工具curl,把它放在c盘。然后,在数据库所在服务器安装7z。最后把这2个存储过程执行,在sqlserver的代理中新建作业,即可实现备份操作。

--备份指定数据库到本地和远程指定位置(-zip压缩)

Create PROCEDURE [dbo].[BackUpDB7z]
@dbname sysname --数据库名 AS declare @backupfile nvarchar() --本地备份文件名
declare @backuplogfile nvarchar() --本地日志备份文件名
declare @archivefile nvarchar() --本地压缩文件名
declare @archivelogfile nvarchar() --本地压缩文件名
declare @target_localpath nvarchar() --本地备份路径
declare @target_backupfile nvarchar() --本地备份文件完整路径
declare @target_backuplogfile nvarchar() --本地备份日志文件完整路径 declare @target_archivefile nvarchar() --本地压缩文件完整路径
declare @target_archivelogfile nvarchar() --本地日志压缩文件完整路径 declare @descr nvarchar() --备份文件描述
declare @date datetime
declare @date_str varchar() --日期时间字符串 declare @cmd nvarchar() --要执行的命令
declare @log_file nvarchar() -- declare @cmd_7z nvarchar()
declare @7z_opt nvarchar() declare @cmd_tool nvarchar()='C:\curl\curl -T'
declare @remotepath nvarchar()='' --远程备份路径
declare @ftp_user nvarchar()=''--ftp帐号
declare @ftp_pw nvarchar()=''--ftp密码
declare @ftp_opt nvarchar()='ftp://' declare @localpath nvarchar()='' --本地备份路径 --参数设置
select @log_file='d:\shellcmd_log.txt'
select @cmd_7z='7z '
select @7z_opt='a -t7z -mx=9 -mmt=on' select @date=getdate()
select @descr=@dbname+cast(year(@date) as nvarchar)+'年'+cast(month(@date) as nvarchar)+'月'+cast(day(@date) as nvarchar)+'日完全备份'
select @backupfile=@dbname+'.bak'
select @backuplogfile=@dbname+'.Log.bak' select @date_str=convert(varchar(), @date, )
select @date_str=REPLACE(@date_str,'-','')
select @date_str=REPLACE(@date_str,' ','_')
select @date_str=REPLACE(@date_str,':','') select @archivefile=@dbname+'_'+@date_str+'.7z'
select @archivelogfile=@dbname+'_'+@date_str+'.Log.7z' if (@localpath<>'' and right(@localpath,)<>'\')
select @target_localpath=@localpath+'\'
else
select @target_localpath=@localpath select @target_backupfile=@target_localpath+@backupfile
select @target_backuplogfile=@target_localpath+@backuplogfile
select @target_archivefile=@target_localpath+@archivefile
select @target_archivelogfile=@target_localpath+@archivelogfile --收缩数据库
--dump transaction @dbname with no_log
--DBCC SHRINKDATABASE (@dbname, ,TRUNCATEONLY) --备份数据库
backup database @dbname to disk=@target_backupfile with FORMAT , description=@descr
--备份日志
backup log @dbname to disk=@target_backuplogfile with FORMAT exec [ClearDbLog] @dbname --压缩数据库
select @cmd=@cmd_7z+' '+@7z_opt+' '+@target_archivefile+' ' +@target_backupfile
--执行命令
exec xp_cmdshell @cmd --压缩日志
select @cmd=@cmd_7z+' '+@7z_opt+' '+@target_archivelogfile+' ' +@target_backuplogfile
--执行命令
exec xp_cmdshell @cmd --传送压缩文件到远程服务器
if @remotepath<>''
begin
select @cmd=@cmd_tool+' '+@target_archivefile+' -u '+@ftp_user+':'+@ftp_pw+' '+@ftp_opt+''+@remotepath
--print(@cmd)
--执行命令
exec xp_cmdshell @cmd select @cmd=@cmd_tool+' '+@target_archivelogfile+' -u '+@ftp_user+':'+@ftp_pw+' '+@ftp_opt+''+@remotepath
--print(@cmd)
--执行命令
exec xp_cmdshell @cmd
end --删除本地备份bak文件
select @cmd='del '+@target_backupfile
--print(@cmd)
--执行命令
exec xp_cmdshell @cmd select @cmd='del '+@target_backuplogfile
--print(@cmd)
--执行命令
exec xp_cmdshell @cmd --删除本地备份7z文件
select @cmd='del '+@target_archivefile
--print(@cmd)
--执行命令
exec xp_cmdshell @cmd select @cmd='del '+@target_archivelogfile
--print(@cmd)
--执行命令
exec xp_cmdshell @cmd
--清除数据库日志

CREATE PROCEDURE [dbo].[ClearDbLog]
@DataBase sysname
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON; declare @sql2005 varchar(max)
declare @sql2008 varchar(max) set @sql2005='
DUMP TRANSACTION '+@DataBase+' WITH NO_LOG;
DBCC SHRINKDATABASE ('+@DataBase+', ,TRUNCATEONLY);
' set @sql2008='
ALTER DATABASE '+@DataBase+' SET RECOVERY SIMPLE;
DBCC SHRINKDATABASE ('+@DataBase+', ,TRUNCATEONLY);
ALTER DATABASE '+@DataBase+' SET RECOVERY FULL;
'
--print(@sql);
exec(@sql2008);
END GO

sqlserver数据库备份方法的更多相关文章

  1. SQLSERVER数据库备份操作和还原操作做了什么

    SQLSERVER数据库备份操作和还原操作做了什么 看了这篇文章:还原/备份时做了些什么 自己也测试了一下,下面说的错误日志指的是SQLSERVER ERRORLOG 一般在C:\Program Fi ...

  2. [SQLServer]NetCore中将SQLServer数据库备份为Sql脚本

    NetCore中将SQLServer数据库备份为Sql脚本 描述: 最近写项目收到了一个需求, 就是将SQL Server数据库备份为Sql脚本, 如果是My Sql之类的还好说, 但是在网上搜了一大 ...

  3. 最简便的MySql数据库备份方法

    http://www.kankanews.com/ICkengine/archives/194.shtml 使用MYSQL进行数据库备份,又很正规的数据库备份方法,同其他的数据库服务器有相同的概念,但 ...

  4. 将服务器上的SqlServer数据库备份到本地

    如何将服务器上的SqlServer数据库备份到本地电脑 http://bbs.csdn.net/topics/370051204 有A数据库服务器,B本机:    我现在想通过在B机器上通过代码调用S ...

  5. 基于PLSQL的数据库备份方法及如何解决导出clob和blob类型数据报错的问题

    基于PL/SQL的数据库备份方法 PL/SQL Developer是Oracle 数据库中用于导入或导出数据库的主要工具,本文主要介绍了利用PL/SQL Developer导入和导出数据库的过程,并对 ...

  6. SQLSERVER 数据库备份脚本-支持多库备份

    原文:SQLSERVER 数据库备份脚本-支持多库备份 <pre name="code" class="sql">--变量定义 DECLARE @b ...

  7. 批处理(bat)实现SQLServer数据库备份与还原

    原文:批处理(bat)实现SQLServer数据库备份与还原 备份数据库.bat @echo off set path=%path%;C:\Program Files (x86)\Microsoft ...

  8. 较详细的sqlserver数据库备份、恢复(转)

    C#实现SQL数据库备份与恢复 有两种方法,都是保存为.bak文件.一种是直接用Sql语句执行,另一种是通过引用SQL Server的SQLDMO组件来实现: .通过执行Sql语句来实现 注意,用Sq ...

  9. 【转载】Sqlserver数据库备份的几种方式

    在实际的数据库Sqlserver的运维的过程中,很多时候我们需要做到数据的备份操作,可以做到定时备份,也可以进行手动数据库备份.在实际的过程中,有时候因业务需要备份出完整数据库,而有时候又因为实际业务 ...

随机推荐

  1. QC使用常见问题

    1.如果出现/qcbin/setup_a.cab this file didn’t pass singnature checking. 请下载capicom.dll文件拷贝到c:windowssyst ...

  2. 构建Maven项目

    Maven(一)如何用Eclipse创建一个Maven项目 Maven学习总结(三)——使用Maven构建项目 Eclipse创建一个Maven Web项目 [项目管理和构建]十分钟教程,eclips ...

  3. ORBslam总结

    ORBSLAM的优缺点:优点:回环检测做得好,基本上只要见到过的场景都能找回来.采用一种更鲁棒的关键帧和三维点的选择机制——先用宽松的判断条件尽可能及时地加入新的关键帧和三维点, 以保证后续帧的鲁棒跟 ...

  4. Flutter实战视频-移动电商-11.首页_屏幕适配方案讲解

    11.首页_屏幕适配方案讲解 国人写的屏幕适配插件: https://github.com/OpenFlutter/flutter_screenutil 最新版本是0.5.1 在pubspec.yam ...

  5. [CVE-2014-3704]Drupal 7.31 SQL注入漏洞分析与复现

    记录下自己的复现思路 漏洞影响: Drupal 7.31 Drupal是一个开源内容管理平台,为数百万个网站和应用程序提供支持. 0x01漏洞复现 复现环境: 1) Apache2.4 2) Php ...

  6. SQL Server知识详解

    1.SET NOCOUNT ON的作用: 作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息. 语法:SET NOCOUNT {ON | OFF} 详解:当SET ONCOUNT ...

  7. 每次打开office 2013都提示配置进度,必须得等他下完然后重启,重启完了在打开,还是提示配置进度,怎么解决

    方法一: 我用下面的方法完美解决.在控制面板中1.删除旧版本2010 或者20032.删除激活程序3.重装2013激活程序done 方法二: 我把WPS卸载了就好了. 方法三: 我是按这个方法解决的, ...

  8. 部署spark 1.3.1 standalong模式

    之前已经写过很多次部署spark 的博客,但是之前部署都是照瓢画葫芦,不得其中的细节,并且以前都是部署spark on yarn 部署环境 scala 2.10.2,jdk 1.6,spark 版本1 ...

  9. github的上传本地文档

    自从使用github以来,一直都是在github网站在线上传文件到仓库中,但是有时因为网络或者电脑的原因上传失败.最重要的原因是我习惯本地编辑,完成以后再一起上传github.看过了几个教程,总结出最 ...

  10. 【SpringCloud构建微服务系列】分布式链路跟踪Spring Cloud Sleuth

    一.背景 随着业务的发展,系统规模越来越大,各微服务直接的调用关系也变得越来越复杂.通常一个由客户端发起的请求在后端系统中会经过多个不同的微服务调用协同产生最后的请求结果,几乎每一个前端请求都会形成一 ...