sqlserver数据库备份方法

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

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

Create PROCEDURE [dbo].[BackUpDB7z]
@dbname sysname --数据库名

AS

declare @backupfile nvarchar(200) --本地备份文件名
declare @backuplogfile nvarchar(200) --本地日志备份文件名
declare @archivefile nvarchar(200) --本地压缩文件名
declare @archivelogfile nvarchar(200) --本地压缩文件名
declare @target_localpath nvarchar(800) --本地备份路径
declare @target_backupfile nvarchar(1000) --本地备份文件完整路径
declare @target_backuplogfile nvarchar(1000) --本地备份日志文件完整路径

declare @target_archivefile nvarchar(1000) --本地压缩文件完整路径
declare @target_archivelogfile nvarchar(1000) --本地日志压缩文件完整路径

declare @descr nvarchar(100) --备份文件描述
declare @date datetime
declare @date_str varchar(100) --日期时间字符串

declare @cmd nvarchar(4000) --要执行的命令
declare @log_file nvarchar(200) --

declare @cmd_7z nvarchar(200)
declare @7z_opt nvarchar(1000)

declare @cmd_tool nvarchar(200)=‘C:\curl\curl -T‘
declare @remotepath nvarchar(800)=‘‘ --远程备份路径
declare @ftp_user nvarchar(300)=‘‘--ftp帐号
declare @ftp_pw nvarchar(200)=‘‘--ftp密码
declare @ftp_opt nvarchar(1000)=‘ftp://‘

declare @localpath nvarchar(800)=‘‘ --本地备份路径

--参数设置
select @log_file=‘d:\shellcmd_log.txt‘
select @cmd_7z=‘7z ‘
select @7z_opt=‘a -t7z -mx=9 -mmt=on‘

select @date=getdate()
select @[email protected]+cast(year(@date) as nvarchar)+‘年‘+cast(month(@date) as nvarchar)+‘月‘+cast(day(@date) as nvarchar)+‘日完全备份‘
select @[email protected]+‘.bak‘
select @[email protected]+‘.Log.bak‘

select @date_str=convert(varchar(100), @date, 120)
select @date_str=REPLACE(@date_str,‘-‘,‘‘)
select @date_str=REPLACE(@date_str,‘ ‘,‘_‘)
select @date_str=REPLACE(@date_str,‘:‘,‘‘)

select @[email protected]+‘_‘[email protected]_str+‘.7z‘
select @[email protected]+‘_‘[email protected]_str+‘.Log.7z‘

if (@localpath<>‘‘ and right(@localpath,1)<>‘\‘)
select @[email protected]+‘\‘
else
select @target_localpath=@localpath

select @[email protected]_localpath+@backupfile
select @[email protected]_localpath+@backuplogfile
select @[email protected]_localpath+@archivefile
select @[email protected]_localpath+@archivelogfile

--收缩数据库
--dump transaction @dbname with no_log
--DBCC SHRINKDATABASE (@dbname, 0,TRUNCATEONLY)

--备份数据库
backup database @dbname to disk[email protected]_backupfile with FORMAT , description=@descr
--备份日志
backup log @dbname to disk=@target_backuplogfile with FORMAT

exec [ClearDbLog] @dbname

--压缩数据库
select @[email protected]_7z+‘ ‘[email protected]_opt+‘ ‘[email protected]_archivefile+‘ ‘ +@target_backupfile
--执行命令
exec xp_cmdshell @cmd

--压缩日志
select @[email protected]_7z+‘ ‘[email protected]_opt+‘ ‘[email protected]_archivelogfile+‘ ‘ +@target_backuplogfile
--执行命令
exec xp_cmdshell @cmd

--传送压缩文件到远程服务器
if @remotepath<>‘‘
begin
select @[email protected]_tool+‘ ‘[email protected]_archivefile+‘ -u ‘[email protected]_user+‘:‘[email protected]_pw+‘ ‘[email protected]_opt+‘‘+@remotepath
--print(@cmd)
--执行命令
exec xp_cmdshell @cmd

select @[email protected]_tool+‘ ‘[email protected]_archivelogfile+‘ -u ‘[email protected]_user+‘:‘[email protected]_pw+‘ ‘[email protected]_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 ‘[email protected]+‘ WITH NO_LOG;
    DBCC SHRINKDATABASE (‘[email protected]+‘, 0,TRUNCATEONLY);
    ‘

    set @sql2008=‘
    ALTER DATABASE ‘[email protected]+‘ SET RECOVERY SIMPLE;
    DBCC SHRINKDATABASE (‘[email protected]+‘, 0,TRUNCATEONLY);
    ALTER DATABASE ‘[email protected]+‘ SET RECOVERY FULL;
    ‘
    --print(@sql);
    exec(@sql2008);
END

GO
时间: 2024-08-02 17:44:16

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

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

http://www.kankanews.com/ICkengine/archives/194.shtml 使用MYSQL进行数据库备份,又很正规的数据库备份方法,同其他的数据库服务器有相同的概念,但有没有想过,MySQL会有更简捷的使用文件目录的备份方法,而且又快又好. 一.数据备份捷径 因为这个方法没有得到官方正式文档的验证,我们暂称为试验吧. 目的:备份hostA主机中一个mysql数据库TestA,并恢复到到hostB机中 在hostA中安装mysql数据库并建立TestA数据库 hos

[SqlServer]数据库备份-问题及解决

正常数据库备份 备份:右键要备份的数据库-任务-备份 还原:右键数据库-还原数据库 问题1-"还原数据库备份时报错"介质集有2个介质簇,但只提供了1个.必须提供所有成员"的解决办法" 解决: 因为框中有几个备份路径就会备份到几处,并不是选中了什么就备份到哪.所以选别的备份路径要记得删掉其他路径,否则还原时这几个备份都要加载进来才能还原. 笔者数据库的备份路径选择默认的备份路经,再拷到u盘,备份还原成功. 问题2-高版本向低版本数据库备份:由于对方的数据库是2012

Sqlserver数据库备份的几种方式

在实际的数据库Sqlserver的运维的过程中,很多时候我们需要做到数据的备份操作,可以做到定时备份,也可以进行手动数据库备份.在实际的过程中,有时候因业务需要备份出完整数据库,而有时候又因为实际业务只需要影响到一张表或者几张表,备份整个数据库未必是最优的方案,此时可采用生成脚本或者Select Into的方式对单表进行备份.DBA在运维过程中备份数据差不多用的就是以上几种操作方式,下面就详细说下这几种备份方式. (1)数据库整库备份 此方式备份数据库是最完整的,可以将数据库中所有的对象都备份下

mysql数据库备份方法总结

今天有点时间,自己总结下mysql备份的几种方法以备查阅! 生产环境中数据无疑是一个公司的命脉,作为一个运维工程师无法保证企业数据的安全,那么是一个不合格的工程师.我们如何保证数据不丢失.或者丢失后快速恢复呢?下面介绍mysql数据库备份和恢复方法. MYSQL基础知识总结 1.为什么需要备份数据? 生成环境中我们的数据库可能会遭遇各种各样的不测导致数据丢失,大概有几种情况(硬件故障.软件故障.自然灾害.黑客攻击.误操作(占比最大))所以,为了在数据丢失后能恢复数据,我们就必须定期备份数据,备份

SQL Server数据库备份方法

数据库备份,是在数据丢失的情况下,能及时恢复重要数据,防止数据丢失的一种重要手段.一个合理的数据库备份方案,应该能够在数据丢失时,有效地恢复重要数据,同时需要考虑技术实现难度和有效地利用资源. 数据库备份有四种类型,分别应用于不同的场合,下面简要介绍一下. 1.完全备份 这是大多数人常用的方式,它可以备份整个数据库,包含用户表.系统表.索引.视图和存储过程等所有数据库对象.但它需要花费更多的时间和空间,所以,一般推荐一周或一月做一次完全备份. 2.事务日志备份 事务日志是一个单独的文件,它记录数

SqlServer 数据库备份到服务器,及删除

一:备份 1.在数据库管理下 新建一个维护计划,然后下图中点击 标红的按钮 新建计划作业,建好后就可以 SqlServer 代理下的作业里可以看到刚新建的作业. 2.SqlServer 代理下的作业  打开新建的作业  点击步骤  编辑或者添加(一般有默认的) 类型选择T-SQL, 3.把的代码复制进去,改一下你的服务器连接(user:192.168.1.11),账号(administrator),密码(admin123),磁盘目录(\\192.168.1.111\bk\111_SQLBAK).

sqlserver数据库备份

差异备份_差异备份 差异备份_作业属性 事务备份_事务备份 事务备份_作业属性 完全备份_清除维护 完全备份_事务日志备份 完全备份_收缩数据库 完全备份_完全备份 完全备份_作业属性

sqlServer数据库备份与还原——差异备份与还原

1.差异备份 是完整备份的补充 备份自上次完整备份以来的数据变动的部分 2.备份过程: 在做差异备份之前需要先进行完整备份.完整备份的过程见:https://i.cnblogs.com/EditPosts.aspx?postid=10322955 差异备份与完整备份过程类似,只是备份类型选为差异备份 3.还原过程: 在进行差异还原的时候先要进行完整备份还原,但是要注意要选择上以下两个对勾,否则会报错. 不要着急点击确定,在选项中选中覆盖现有数据库,同时在恢复状态处选择第二个. 点击确定后,可以看

sqlserver 数据库备份,还原

原文地址:https://www.cnblogs.com/Spinoza/p/11546240.html