【Amadeus原创】SQL Server数据库备份、差异备份、日志备份脚本
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数据库备份、差异备份、日志备份脚本的更多相关文章
- 2. SQL Server数据库状态监控 - 错误日志
原文:2. SQL Server数据库状态监控 - 错误日志 无论是操作系统 (Unix 或者Windows),还是应用程序 (Web 服务,数据库系统等等) ,通常都有自身的日志机制,以便故障时追溯 ...
- SQL Server 数据库引擎怎样记录完整备份后修改过的数据
SQL Server 使用两个内部数据结构跟踪被大容量复制操作修改的区,以及自上次完整备份后修改的区.这些数据结构极大地加快了差异备份的速度.当数据库使用大容量日志恢复模式时,这些数据结构也可以加快将 ...
- 2017-3-17 SQL server 数据库 视图,事务,备份还原,分离附加
1.视图:只能查看,不能增删改不能有重复列 create view 名字as查询语句 2.事务:保证流程的完整执行 begin tran --开始事务监控 被监控的代码 ... ...if @@ERR ...
- sql server数据库状态监控
sql server数据库监控 转自:https://www.cnblogs.com/seusoftware/category/500793.html 6. SQL Server数据库监控 - 如 ...
- [PowerDesign]将数据库从SQL Server数据库转换为MySQL
原文:[PowerDesign]将数据库从SQL Server数据库转换为MySQL 一.迁移Database Schema. 首先使用Sybase Powerdesigner的逆向工程功能,逆向出S ...
- SQL Server数据库、表、数据类型基本概念
一.SQL Server的数据存储结构 SQL Server是一个数据库管理系统,需要以有效方式存储高容量数据.要更好地理解SQL Server处理数据的方式,就需要了解数据的存储结构. 1.文件类型 ...
- SQL SERVER完整、差异和事务日志备份及还原(脚本和GUI实现) [原创]
一.完整备份.差异备份和事务日志备份的脚本 --完整备份数据库 BACKUP DATABASE Test_Bak TO DISK = 'E:\20150609_75\bak\Test_bak_full ...
- SQL Server 数据库备份还原和数据恢复
认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点. 数据 ...
- SQL Server数据库定时自动备份
SQL Server 数据库定时自动备份[转] 在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求 ...
- Sql Server数据库备份和恢复:原理篇
本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...
随机推荐
- 【赵渝强老师】Redis的慢查询日志
Redis慢查询日志帮助开发和运维人员定位系统存在的慢操作.慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(慢查询ID,发生时间戳,耗时,命令的详细信息 ...
- 基于Keras-YOLO实现目标检测
Keras-YOLO 3项目使用Python语言实现了YOLO v3网络模型,并且可以导入Darknet网络预先训练好的权重文件信息直接使用网络进行目标识别. 1. 下载Keras-YOLO 3项目 ...
- 技术分享 | 徐轶韬:从MySQL5.7升级到MySQL 8.0
在6月20日举办的[墨天轮数据库沙龙-MySQL 5.7 停服影响与应对方案]中,甲骨文MySQL解决方案首席工程师徐轶韬分享了<从MySQL5.7升级到MySQL 8.0>主题演讲,本文 ...
- iOS程序内语言切换使用小结
随着时代的发展,应用程序相继出现了不同语言的版本方案,中文,英文,法文,韩文等等:想在应用程序中实现语言的自由切换,需要配置多个语言的文件,根据用户的动态选择获取不同语言文件下的语言文件,从而显示到界 ...
- 时隔半年 DotNetGuide 已突破了 6.6K + Star,持续更新,欢迎更多小伙伴PR投稿!
前言 记得今年5月份的时候 DotNetGuide GitHub才突破5k Star,经过持续不断地输出时隔半年 DotNetGuide 已突破了 6.6K + Star!并且由我创建的DotNetG ...
- Plain-Det:同时支持多数据集训练的新目标检测 | ECCV'24
近期在大规模基础模型上的进展引发了对训练高效大型视觉模型的广泛关注.一个普遍的共识是必须聚合大量高质量的带注释数据.然而,鉴于计算机视觉中密集任务(如目标检测和分割)标注的固有挑战,实际的策略是结合并 ...
- MongoDB mongod.log "connection refused because too many open connections" 处理方法
一.MongoDB副本集 副本集名称 角色 IP地址 端口号 优先级 CCTV-test Primary 192.168.1.21 27017 10 Secondary 192.168.1.21 27 ...
- 微积分 Calculus
前言 如果你的工作中没有用到微积分,毫无疑问,你的工作是简单而枯燥的. 0 limit Say there is a function \(f(x) = x\). \(x \rightarrow a\ ...
- Web渗透04_密码破解
账号密码是任何一个系统都必备的要素. 弱密码 123456 654321 112233 admin 等等 默认密码 Tomcat控制台: tomcat/tomcat 明文传输 http的明文传输,可以 ...
- cmd杀死占用端口号的Java进程
下面列出两种杀死进程的方法: 1.根据jps查询.2.根据端口号查询进程. 最后根据进程id杀死进程(注意:进程id不等同于端口号) 根据jps查进程 jps命令,列出Java进程列表 根据进程id杀 ...