dzw159

SQLServer备份语句(可用于作业备份)

--完整备份
declare @name varchar(250) 
set @name=\'D:\BACKUP\ALLBACKUP\\' + convert(varchar(50),getdate(),112)+ \'mzyy.bak\'

BACKUP DATABASE [mzyy] TO DISK = @name WITH NOFORMAT, INIT, 
NAME = N\'mzyy-完整 数据库 备份\', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO

--删除完整备份

declare @dir varchar(100),@str varchar(100),@fileName varchar(30),@filepath varchar(300)
SET @dir=\'del D:\BACKUP\ALLBACKUP\\'
SET @str = LEFT(replace(replace(replace(convert(varchar,getdate()-7,20),\'-\',\'\'),\' \',\'\'),\':\',\'\'),8)
SET @fileName = \'mzyy.bak\'
SET @filepath =@dir +@str + @fileName
exec xp_cmdshell @filepath

--删除差异备份

declare @dirs varchar(100),@strs varchar(100),@fileNames varchar(30),@filepaths varchar(300)
SET @dirs=\'del D:\BACKUP\DIFFBACKUP\\'
SET @strs = LEFT(replace(replace(replace(convert(varchar,getdate()-7,20),\'-\',\'\'),\' \',\'\'),\':\',\'\'),8)
SET @fileNames = \'mzyy_DIFF.diff\'
SET @filepaths =@dirs +@strs + @fileNames
exec xp_cmdshell @filepaths
--差异备份

declare @str varchar(100)
set @str=\'D:\BACKUP\DIFFBACKUP\\'+replace(replace(replace(convert(varchar,getdate(),112),\'-\',\'\'),\' \',\'\'),\':\',\'\')+\'mzyy_DIFF.diff\'
BACKUP DATABASE [mzyy] TO DISK=@str
WITH DIFFERENTIAL,RETAINDAYS=8,NOFORMAT,NOINIT,
NAME=N\'mzyy差异备份\',SKIP,NOREWIND,
NOUNLOAD,STATS=10

注意:如果需要删除备份的话,需要开启 xp_cmdshell 

语句:推荐使用语句(因为,我使用的是  SQL2008R2,没在 SQL的配置工具中找到 SQLServer外围应用配置器)

还有,记得  给 文件夹配置权限(不然无法识别文件夹内的备份文件)

sp_configure \'show advanced options\',1
reconfigure
go
sp_configure \'xp_cmdshell\',1
reconfigure
go

--如需关闭只需将“sp_configure \'xp_cmdshell\',1”改为“sp_configure \'xp_cmdshell\',0”即可。

 

 

感谢:https://www.cnblogs.com/zhangq723/archive/2012/03/13/2394102.html

https://www.cnblogs.com/devloper110/articles/1298650.html

http://blog.csdn.net/XU123bin/article/details/71467142

https://www.cnblogs.com/atree/p/SQL_SERVER_xp_cmdshell.html

 

发表于 2018-01-19 09:46  dzw159  阅读(344)  评论(0编辑  收藏  举报
 

分类:

技术点:

相关文章: