1,sp脚本

USE [master]

GO

/****** Object: StoredProcedure [dbo].[sp_BackupDatabase] Script Date: 2021/10/22 10:04:28 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- Parameter1: 备份类型 F=全部, D=差异, L=日志

ALTER PROCEDURE [dbo].[sp_BackupDatabase]

@backupType CHAR(1) AS

BEGIN

SET NOCOUNT ON; declare @filepath_backup varchar(100) declare @dateTime varchar(30),@del_time_stamp varchar(50) DECLARE @sqlCommand NVARCHAR(1000) DECLARE @sourcePath nvarchar(max) DECLARE @destionationPath nvarchar(max) DECLARE @cmdStr nvarchar(max) ---创建数据库对应文件夹

EXECUTE master.dbo.xp_create_subdir N'C:\Database_BackUp\Full'

EXECUTE master.dbo.xp_create_subdir N'C:\Database_BackUp\Difference'

EXECUTE master.dbo.xp_create_subdir N'C:\Database_BackUp\Log_Bak'

IF @backupType = 'F'

set @filepath_backup='C:\Database_BackUp\Full'

IF @backupType = 'D'

set @filepath_backup='C:\Database_BackUp\Difference'

IF @backupType = 'L'

set @filepath_backup='C:\Database_BackUp\Log_Bak'

SET ANSI_WARNINGS OFF

SET @dateTime = replace(convert(varchar,current_timestamp, 112)+'_'+convert(varchar,current_timestamp, 108),':','') ----删除超过14天的备份文件

DECLARE @delete_time datetime

set @delete_time = getdate() -14

EXECUTE master.dbo.xp_delete_file 0,N'C:\Database_BackUp',N'trn',@delete_time,1

EXECUTE master.dbo.xp_delete_file 0,N'C:\Database_BackUp',N'bak',@delete_time,1

SELECT @dateTime = replace(convert(varchar,current_timestamp, 112)+'_'+convert(varchar,current_timestamp, 108),':','') declare db_info cursor for

SELECT NAME,recovery_model FROM MASTER.SYS.databases where state = 0 ---只处理online的数据库

and name in ('OperationSystem') ----填写需要备份的数据库

declare @databaseName nvarchar(128) declare @recovery_model int

OPEN db_info fetch next from db_info into @databaseName,@recovery_model

while @@fetch_status=0

Begin

---recovery_model 1 : FULL 2 : BULK_LOGGED 3:SIMPLE

IF @backupType = 'F'

begin

SET @sqlCommand = 'BACKUP DATABASE '+ @databaseName +' TO DISK = '''+ @filepath_backup + ''+ @databaseName +'_Full_'+@dateTime+'.BAK'' with STATS = 10, INIT, COMPRESSION, CHECKSUM '

set @sourcePath = @filepath_backup + ''+ @databaseName +'_Full_'+@dateTime+'.BAK'

end

IF @backupType = 'D' and @databaseName not in ('master','msdb','model') begin

SET @sqlCommand = 'BACKUP DATABASE '+ @databaseName +' TO DISK = '''+ @filepath_backup + ''+ @databaseName + '_Diff_' + @dateTime + '.BAK '' WITH DIFFERENTIAL, STATS = 10, INIT, COMPRESSION'

set @sourcePath = @filepath_backup + ''+ @databaseName +'_Diff_'+@dateTime+'.BAK'

end

IF @backupType = 'L' and @recovery_model <> 3 and @databaseName not in ('master','msdb','model') begin

SET @sqlCommand = 'BACKUP LOG '+ @databaseName +' TO DISK = '''+ @filepath_backup + '' + @databaseName +'_Log_' + @dateTime + '.TRN'' with STATS = 10, INIT, COMPRESSION'

set @sourcePath = @filepath_backup + ''+ @databaseName +'_Log_'+@dateTime+'.TRN'

end

print @sqlCommand

EXECUTE sp_executesql @sqlCommand

set @destionationPath = REPLACE(@sourcePath,'C:\Database_BackUp','x:') /* exec sp_configure 'show advanced options', 1 --允许配置高级选项

reconfigure --重新配置

exec sp_configure 'xp_cmdshell', 1 --启用xp_cmdshell

reconfigure --重新配置

--配置共享路径用户名和密码

exec master..xp_cmdshell 'net use x: \\Server-QC-DB2.zt.com\Database_BackUp P@ssw0rd /user:dbbackuper'

--exec sp_configure 'xp_cmdshell', 0 --执行完成后出于安全考虑可以将xp_cmdshell关闭 */

set @cmdStr = 'exec master..xp_cmdshell ''copy '+@sourcePath+' '+@destionationPath+''''

EXEC(@cmdStr) fetch next from db_info into @databaseName,@recovery_model

End

close db_info deallocate db_info PRINT '-- Backup completed successfully at '+convert(varchar, getdate(), 120) SET ANSI_WARNINGS ON

END

2,SQL agent任务指令:

[dbo].[sp_BackupDatabase] 'F'

3,别忘了每周agent任务,跑一下日志的收缩

USE OperationSystem; GO

ALTER DATABASE OperationSystem SET RECOVERY SIMPLE; --设置简单恢复模式

GO

DBCC SHRINKFILE (OperationSystem_log, 1); GO

ALTER DATABASE OperationSystem SET RECOVERY FULL; --恢复为原模式

GO

【Amadeus原创】SQL Server数据库备份、差异备份、日志备份脚本的更多相关文章

  1. 2. SQL Server数据库状态监控 - 错误日志

    原文:2. SQL Server数据库状态监控 - 错误日志 无论是操作系统 (Unix 或者Windows),还是应用程序 (Web 服务,数据库系统等等) ,通常都有自身的日志机制,以便故障时追溯 ...

  2. SQL Server 数据库引擎怎样记录完整备份后修改过的数据

    SQL Server 使用两个内部数据结构跟踪被大容量复制操作修改的区,以及自上次完整备份后修改的区.这些数据结构极大地加快了差异备份的速度.当数据库使用大容量日志恢复模式时,这些数据结构也可以加快将 ...

  3. 2017-3-17 SQL server 数据库 视图,事务,备份还原,分离附加

    1.视图:只能查看,不能增删改不能有重复列 create view 名字as查询语句 2.事务:保证流程的完整执行 begin tran --开始事务监控 被监控的代码 ... ...if @@ERR ...

  4. sql server数据库状态监控

    sql server数据库监控 转自:https://www.cnblogs.com/seusoftware/category/500793.html   6. SQL Server数据库监控 - 如 ...

  5. [PowerDesign]将数据库从SQL Server数据库转换为MySQL

    原文:[PowerDesign]将数据库从SQL Server数据库转换为MySQL 一.迁移Database Schema. 首先使用Sybase Powerdesigner的逆向工程功能,逆向出S ...

  6. SQL Server数据库、表、数据类型基本概念

    一.SQL Server的数据存储结构 SQL Server是一个数据库管理系统,需要以有效方式存储高容量数据.要更好地理解SQL Server处理数据的方式,就需要了解数据的存储结构. 1.文件类型 ...

  7. SQL SERVER完整、差异和事务日志备份及还原(脚本和GUI实现) [原创]

    一.完整备份.差异备份和事务日志备份的脚本 --完整备份数据库 BACKUP DATABASE Test_Bak TO DISK = 'E:\20150609_75\bak\Test_bak_full ...

  8. SQL Server 数据库备份还原和数据恢复

      认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点. 数据 ...

  9. SQL Server数据库定时自动备份

    SQL Server 数据库定时自动备份[转]   在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求 ...

  10. Sql Server数据库备份和恢复:原理篇

    本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...

随机推荐

  1. C# 开源浏览器性能提升,体验Chrome级速度

    前言 使用 C# 和 CefSharp 开发的全功能网页浏览器. 项目介绍 SharpBrowser 是目前最快的开源 C# 网页浏览器! 采用了轻量级的 CEF 渲染器,在呈现网页时甚至比 Goog ...

  2. Word、Excel办公书的资源下载

    我是清华社编辑,下载资源没有版权问题,可供读者个人学习用,但不允许商用. 微信扫描,清华社网盘,可转自己邮箱下载.安全,无风险. <Word/Excel/PPT 2019商务办公从入门到精通&g ...

  3. element输入天数,获取当前时间加上天数 【时间获取】

    handleInput (val) { // console.log(this.formModel.ITEM_PM) if (!(/[^\d]/g).test(val)) { // console.l ...

  4. HDU-ACM 2024 Day4

    T1001 超维攻坚(HDU 7469) 三维凸包,不会. T1002 黑白边游戏(HDU 7470) 显然这道题没有一个固定的最优策略,所以只能 \(\text{dp}\) 决策. 可以倒着做,设 ...

  5. (系列七).net8 Aop切面编程

    说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ...

  6. NLog 在NetCore中实现多实例注入DI, 实现多租户模式

    通常, 我们在使用了 Microsoft.Extensions.DependencyInjection DI框架的情况下, 我们一般通过 .ConfigureLogging((HostBuilderC ...

  7. Js数组&高阶函数

    数组也是一种复合数据类型,在数组可以存储多个不同类型的数据 数组中存储的是有序的数据,数组中的每个数据都有一个唯一的索引可以通过索引来操作获取数据 数组中存储的数据叫做元素 任何类型的值都可以成为数组 ...

  8. KubeSphere 社区双周报 | 杭州站 Meetup 议题征集中 | 2023.04.14-04.27

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  9. 基于 KubeSphere 的运管系统落地实践

    作者:任建伟,某知名互联网公司云原生工程师,容器技术信徒,云原生领域的实践者. 背景介绍 在接触容器化之前,我们团队内部的应用一直都是基于虚拟机运管,由开发人员自行维护. 由于面向多开发部门服务,而开 ...

  10. 从0到1实现项目Docker编排部署

    在深入讨论 Docker 编排之前,首先让我们了解一下 Docker 技术本身.Docker 是一个开源平台,旨在帮助开发者自动化应用程序的部署.扩展和管理.自 2013 年推出以来,Docker 迅 ...