设为首页 加入收藏

TOP

SQL一键备份用户数据库
2015-11-21 01:59:16 来源: 作者: 【 】 浏览:0
Tags:SQL 备份 用户 数据库

?

大家都知道,Ms Sql 有自动备份的功能,但如果由于某种原因不能自动备份,或者我们想手动备份的话,就可以用下边的sql语句来执行备份。

--------------------代码开始-------------

?

USE [master]




------删除旧数据-------------------------------------------------------------
DECLARE @delTime VARCHAR(100)
SET @delTime = CONVERT(VARCHAR(100), GETDATE(), 126) -----当前时间
EXECUTE MASTER.dbo.xp_delete_file 0,'D:\DataBak','bak',@delTime,1






DECLARE @FILENAME VARCHAR(500)


DECLARE @DATABakPath VARCHAR(500)


DECLARE @DATABaseName VARCHAR(500)


DECLARE @DATAFullName VARCHAR(500)


SET @DATABakPath = 'D:\DataBak\'


DECLARE @temp TABLE(a INT, b INT, c INT)


DECLARE @exeText VARCHAR(100)


SET @FILENAME = REPLACE(
REPLACE(
REPLACE(CONVERT(VARCHAR, GETDATE(), 120), '-', ''),
' ',
''
),
':',
''
) + '.bak'









------------遍历所有用户数据库 进行备份-------------------------------------------------------------------


DECLARE My_Cursor CURSOR --定义游标
FOR
(
SELECT NAME
FROM sys.databases
WHERE NAME NOT IN ('master', 'msdb', 'tempdb', 'model',
'ReportServerTempDB', 'ReportServer')
) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO @DATABaseName; --读取第一行数据
WHILE @@FETCH_STATUS = 0
BEGIN
SET @DATAFullName = @DATABakPath + @DATABaseName

SET @exeText = 'mkdir ' + @DATAFullName --创建备份目录
EXEC xp_cmdshell @exeText,
no_output

SET @DATAFullName = @DATAFullName + '\' + @FILENAME + ''

BACKUP DATABASE @DATABaseName TO DISK = @DATAFullName

FETCH NEXT FROM My_Cursor INTO @DATABaseName; --读取下一行数据
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标


PRINT '-----------备份完成---------------------' + CONVERT(VARCHAR(100), GETDATE(), 126)+ '---------------'

--------------------代码结束-------------

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MongoDB学习(5)主从复制 下一篇数据库调优教程(八)什么情况下..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: