首页 > 数据库技术 > 详细

SQLServer使用脚本执行数据库备份

时间:2019-12-18 16:40:16      阅读:111      评论:0      收藏:0      [点我收藏+]

 背景

sql server express版无法使用作业,提供一种解决思路

 

fullbak.sql 完整备份

数据库实例级别的完整备份,备份路径为E:\sqlbak\数据库名\,注意需要添加好当前数据库实例各数据库名的子目录

EXEC sp_MSForEachDB USE [?];
PRINT DB_NAME();
DECLARE @databasename NVARCHAR(128) =DB_NAME();

--恢复模式为完整 
IF EXISTS (SELECT *
           FROM sys.databases
           WHERE name=DB_NAME()AND recovery_model_desc=‘‘FULL‘‘)BEGIN
    DECLARE @backupname NVARCHAR(128);
    SET @backupname=‘‘E:\sqlbak\‘‘+@databasename+‘‘\‘‘+@databasename+‘‘_fullbak_‘‘+REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(50), GETDATE(), 120), ‘‘-‘‘, ‘‘‘‘), ‘‘:‘‘, ‘‘‘‘), ‘‘ ‘‘, ‘‘_‘‘)+‘‘.bak‘‘;
    EXEC(‘‘
BACKUP DATABASE [‘‘+@databasename+‘‘] TO  DISK = N‘‘‘‘‘‘+@backupname+‘‘‘‘‘‘
WITH  RETAINDAYS = 14, NOFORMAT, NOINIT,  NAME = N‘‘‘‘‘‘+@databasename+‘‘-完整 数据库 备份‘‘‘‘, 
SKIP, NOREWIND, NOUNLOAD, COMPRESSION,  STATS = 10
‘‘   );
END;

cleanbak.sql 清理脚本

/*  ---   开启xp_cmdshell权限,可通过数据库操作文件  ---
use master;
go

sp_configure ‘show advanced options‘,1
reconfigure
go
sp_configure ‘xp_cmdshell‘,1
reconfigure
go
*/

exec master.dbo.xp_cmdshell forfiles /p "E:\sqlbak" /s /m *.bak /d -15 /c "cmd /c del @path"

SQLBak.bat 使用bat执行sql文件 

@ECHO OFF?

SET dbhost=127.0.0.1
SET dbuser=sa
SET dbpasswd=123456
set dbName=master
SET sqlpath=%~dp0
set bakfile=fullbak.sql
set cleanfile=cleanbak.sql

::执行SQL脚本
osql -S %dbhost% -U %dbuser% -P %dbpasswd% -d %dbName% -i %sqlpath%%bakfile%
ECHO 备份完成!

::执行清理脚本
osql -S %dbhost% -U %dbuser% -P %dbpasswd% -d %dbName% -i %sqlpath%%cleanfile%
ECHO 清理完成!

PAUSE

@ECHO Done!?

配置windows计划任务,执行该bat文件

【管理工具】-【任务计划程序】-【创建基本任务】

选择每天2:00,执行SQLBak.bat 文件

SQLServer使用脚本执行数据库备份

原文:https://www.cnblogs.com/Canyon/p/12060618.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!