SQL Server数据库备份、差异备份、日志备份脚本.250108

news/2025/1/8 10:52:53/文章来源:https://www.cnblogs.com/amadeuslee/p/18659250

1,sp脚本

USE [master]
GO
/****** Object:  StoredProcedure [dbo].[sp_BackupDatabase]    Script Date: 2025/1/8 10:43:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO-- Author: Amadeus-- Create date: 2021-10-20   exec sp_BackupDatabase L-- Description: 备份数据库,备份路径C:\Database_BackUp\ 可自行修改-- 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'D:\Database_BackUp\Full\'
EXECUTE master.dbo.xp_create_subdir N'D:\Database_BackUp\Difference\'
EXECUTE master.dbo.xp_create_subdir N'D:\Database_BackUp\Log_Bak\'IF @backupType = 'F'
set @filepath_backup='D:\Database_BackUp\Full\'
IF @backupType = 'D'
set @filepath_backup='D:\Database_BackUp\Difference\'
IF @backupType = 'L'
set @filepath_backup='D:\Database_BackUp\Log_Bak\'SET ANSI_WARNINGS OFF
SET @dateTime = replace(convert(varchar,current_timestamp, 112)+'_'+convert(varchar,current_timestamp, 108),':','')----删除超过30天的备份文件
DECLARE @delete_time datetime
set @delete_time = getdate() -30EXECUTE master.dbo.xp_delete_file 0,N'D:\Database_BackUp',N'trn',@delete_time,1
EXECUTE master.dbo.xp_delete_file 0,N'D:\Database_BackUp',N'bak',@delete_time,1SELECT @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 ('Test')  ----填写需要备份的数据库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:SIMPLEIF @backupType = 'F' 
beginSET @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')
beginSET @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')
beginSET @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 @sqlCommandEXECUTE sp_executesql @sqlCommand 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任务,跑一下数据库日志的收缩,例:test数据库

USE test;
GO 
ALTER DATABASE test
SET RECOVERY SIMPLE;  --设置简单恢复模式
GODBCC SHRINKFILE (test_log, 1);
GOALTER DATABASE test
SET RECOVERY FULL;   --恢复为原模式
GO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/865796.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JuiceFS 2024:开源与商业并进,迈向 AI 原生时代

即将过去的 2024 年,是 JuiceFS 开源版本推出的第 4 年,企业版的第 8 个年头。回顾过去这一年,JuiceFS 社区版依旧保持着快速成长的势头,GitHub 星标突破 11.1K,各项使用指标增长均超过 100%,其中文件系统总数量较前一年更是增长了 8.5 倍;企业版同样持续保持高速增长,…

智慧防洪平台:构建城市安全的数字防线

随着全球气候变化的加剧和城市化进程的加快,城市防洪问题日益凸显。智慧防洪平台作为智慧城市建设的重要组成部分,其核心目标是通过集成先进的信息技术和数据分析,实现对城市洪涝灾害的有效预防和应对。本文将深入探讨智慧防洪平台的建设内容,以期为城市安全提供强有力的数…

如何通过数据分析优化电商营销策略和客户体验

一、电商数据的收集 电商平台的数据来源多样,包括用户行为数据、交易数据、客户反馈数据、商品信息数据等。高效的数据收集不仅是数据分析的前提,也是实现精准决策的基础。 1.1 数据收集的主要来源 用户行为数据:用户在电商平台上的每一次点击、浏览、搜索、加入购物车、下单…

CDS标准视图:安排维护计划的调用 I_MAINTENANCEPLANSCHEDULE

视图名称:安排维护计划的调用 I_MAINTENANCEPLANSCHEDULE 视图类型: 视图代码:点击查看代码 @AbapCatalog.compiler.compareFilter: true @AbapCatalog.sqlViewName: IMPLASCHED @AccessControl.authorizationCheck: #CHECK @ClientHandling.algorithm: #SESSION_VARIABLE @…

Bolt.new 30秒做了一个网站,还能自动部署,难道要吊打 Cursor?

大家好,我是汤师爷~ 这篇聊聊 Bolt.new 和 Cursor 的对比。Bolt.new 是一款基于 SaaS 的 AI 编码平台。它由 LLM 驱动的智能体作为底层,并结合 WebContainers 技术,让用户可以直接在浏览器中进行编码和运行。其主要优势包括:支持前后端同时开发; 项目文件夹结构可视化; 环…

Ubuntu20.4安装Docker

一、设置 Docker 存储库 1、更新系统 apt 包索引 更新软件包索引,并且安装必要的依赖软件,来添加一个新的 HTTPS 软件源 # 更新索引 sudo apt-get update# 安装必要的依赖包,使apt能通过HTTPS使用仓库 sudo apt install apt-transport-https ca-certificates curl gnupg-age…

linux 清空catalina.out日志 不需要重启tomcat(五种方法)

今天突然发现图表展示查询条件不能用了,想着可能是日志太多一直没清理导致的,结果一查tomcat的log目录居然已经有1012G,果断删除生成的前几年的日志,发现这些都不大,保留2425年其他都删掉还有956G,仔细一看catalina.out居然有865G,上网查看有没有不关闭tomcat就清空这个…

docker compose的安装.211215

1,安装docker CentOS8 默认是会读取centos.org的mirrorlist的,所以一般来说是不需要配置镜像的。 step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 dnfstep 2: 更新 container.io 包, 否则可能会报 package docker-ce-3:1…

Failed to start docker.service Unit docker.service not found处理方式.211215

出现该问题的原因是 centos8 中的podman导致的,podman是centos8预装的类似docker的软件 不需要所以直接卸载。 解决方式: dnf remove podman然后重装Docker sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo http…

AI 与 Mermaid 使用教程之流程图 - 从入门到精通

Mermaid 流程图的基本语法,流程图由节点(几何形状)和边(箭头或线)组成。Mermaid 代码定义了如何创建节点和边,并适应不同的箭头类型、多方向箭头,以及与子图的链接。本文由 Mermaid中文文档 整理而来,并且它同时提供了一个 Mermaid在线编辑器,支持在线编辑与生成流程图…

探讨云计算如何助力电商平台提升管理效率

一、数字化技术推动电商管理发展的重要性 电商行业的竞争日益激烈,消费者对购物体验的要求不断提高。电商企业必须通过数字化手段提升效率、优化流程,并通过数据驱动的决策来提高客户满意度和运营效益。而大数据、人工智能和云计算等技术的融合应用,为电商平台提供了新的解决…

CICD Day6、基于kubernetes动态创建代理

Jenkins支持基于kubernetes动态创建代理,使代理程序能够运行在Pod中,这种方法可以根据构建任务的变化动态的增减代理,充分利用kubernetes的特性,为分布式构建提供灵活的运行环境如下图所示当项目触发构建时,Jenkins会调用kubernetes api创建一个专用的pod作为从节点,在该…