博客摘录「 Sql Server 收缩日志文件原理及always on 下的实践」2024年5月22日

四、Always on 环境下实践  

先对数据库进行完整备份:

EXEC sp_configure 'show advanced options', 1;

RECONFIGURE;

EXEC sp_configure 'xp_cmdshell', 1;

RECONFIGURE;

DECLARE @DbName NVARCHAR(1000);

DECLARE myCursor CURSOR LOCAL STATIC

FOR

SELECT name

FROM sysdatabases

WHERE name NOT IN ( 'master', 'model', 'msdb', 'tempdb' )

AND name NOT LIKE '%test%'

AND name NOT LIKE '%bak%'

AND name NOT LIKE '%demo%'

AND version IS NOT NULL

AND version <> 0

ORDER BY name;

OPEN myCursor;

FETCH NEXT FROM myCursor INTO @DbName;

WHILE ( @@FETCH_STATUS = 0 )

BEGIN

DECLARE @strDate AS NVARCHAR(20),

@strDateBeforeSeven AS NVARCHAR(20),

@strFileName AS NVARCHAR(255),

@strFileNameBeforeSeven AS NVARCHAR(255),

@strCommand AS NVARCHAR(255)

SET @strDate = CONVERT(NVARCHAR(20),GETDATE(),112);

SET @strDateBeforeSeven = CONVERT(NVARCHAR(20),GETDATE()-3,112);

SET @strFileName = 'E:\daybak\'+@DbName+'bakup'+@strDate;

SET @strFileNameBeforeSeven = 'E:\daybak\'+@DbName+'bakup'+@strDateBeforeSeven;

EXEC ('BACKUP DATABASE '+@DbName+' TO DISK = ''' + @strFileName + '.bak''')

SET @strCommand = 'DEL ' + @strFileNameBeforeSeven + '.bak'

EXEC master.dbo.xp_cmdshell @strCommand

FETCH NEXT FROM myCursor INTO @DbName;

END;

CLOSE myCursor;

DEALLOCATE myCursor;  

然后对数据库进行事务日志备份并收缩:

EXEC sp_configure 'show advanced options', 1;

RECONFIGURE;

EXEC sp_configure 'xp_cmdshell', 1;

RECONFIGURE;

DECLARE @DbName NVARCHAR(1000);

DECLARE myCursor CURSOR LOCAL STATIC

FOR

SELECT name

FROM sysdatabases

WHERE name NOT IN ( 'master', 'model', 'msdb', 'tempdb' )

AND name NOT LIKE '%test%'

AND name NOT LIKE '%bak%'

AND name NOT LIKE '%demo%'

AND version IS NOT NULL

AND version <> 0

ORDER BY name;

OPEN myCursor;

FETCH NEXT FROM myCursor INTO @DbName;

WHILE ( @@FETCH_STATUS = 0 )BEGIN

DECLARE @strDate AS NVARCHAR(20),

@strDateBeforeSeven AS NVARCHAR(20),

@strFileName AS NVARCHAR(255),

@strFileNameBeforeSeven AS NVARCHAR(255),

@strCommand AS NVARCHAR(255)

SET @strDate = CONVERT(NVARCHAR(20),GETDATE(),112);

SET @strDateBeforeSeven = CONVERT(NVARCHAR(20),GETDATE()-3,112);

SET @strFileName = 'E:\Log_daybak\'+@DbName+'bakup'+@strDate;

SET @strFileNameBeforeSeven='E:\Log_daybak\'+@DbName+']bakup'+@strDateBeforeSeven;

EXEC ('BACKUP LOG '+@DbName+' TO DISK = ''' + @strFileName + '.log'';USE '+@DbName+';DBCC SHRINKFILE(2,100);')

SET @strCommand = 'DEL ' + @strFileNameBeforeSeven + '.log'

EXEC master.dbo.xp_cmdshell @strCommand

FETCH NEXT FROM myCursor INTO @DbName;

END;

CLOSE myCursor;

DEALLOCATE myCursor;

相关推荐
一隅论数智5 小时前
OWL(Web Ontology Language)介绍与使用举例(二)
大数据·经验分享·笔记·学习·自然语言处理·学习方法·政务
sunoo-2299 小时前
【嵌入式Linux驱动学习】Day1-Day2 全流程梳理:环境搭建→U-Boot→内核→根文件系统→驱动基础
linux·运维·驱动开发·笔记·学习·阿里云·恩智浦
by209999 小时前
list:迭代器与资源管理实现的综合叙述(下)
数据结构·c++·笔记·list
wdfk_prog10 小时前
LWIP教程 03:从 `low_level_input()` 到 `pbuf_free()`——`pbuf` 的数据视图、Chain 与引用计数
运维·网络·笔记·学习
yi01110 小时前
Leetcode 49 用 “身份证‘‘巧解
人工智能·笔记·python·算法·leetcode·哈希表
ouynagda10 小时前
嵌入式Linux i.MX6ULL系统移植学习笔记
linux·笔记·学习
yi01111 小时前
DAY22: LeetCode 733:图像渲染——从二维网格开始理解 DFS 和 BFS
数据结构·笔记·python·算法·leetcode·深度优先·宽度优先
sbjdhjd11 小时前
智能体开始“动手”之后:OpenAI越权事件、Anthropic算力资本化与开放权重模型竞逐 | AI与SI行业日报整理(9月29日—10月6日)
大数据·人工智能·经验分享·笔记·ai·chatgpt·开源
上位机妹子11 小时前
从零理解 EF Core:用 Minimal API 给「工作项看板」建模(小白笔记)
笔记
深圳老胡12 小时前
STM32 MCU 国产替代型号简介
笔记·stm32·单片机·代码规范