博客摘录「 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;

相关推荐
TANGLONG2221 小时前
【C++】继承详解——基类/派生类、作用域、默认函数、菱形继承(超详细)
java·c语言·c++·经验分享·笔记·ajax
木木_王2 小时前
嵌入式学习 | STM32裸板驱动开发(Day01)入门学习笔记(超详细完整版|点灯实验 + 库函数代码 + 原理全解)
linux·驱动开发·笔记·stm32·学习
largecode2 小时前
能不能让座机号码显示“XX公司”那样的认证名称?申请号码认证方法
经验分享·笔记·音视频·课程设计·oneapi·segmentfault·微信开放平台
Hua-Jay2 小时前
OpenCV联合C++/Qt 学习笔记(十七)----凸包检测、直线检测及点集拟合
c++·笔记·qt·opencv·学习·计算机视觉
是喵斯特ya3 小时前
红日内网靶场1环境搭建
笔记
中屹指纹浏览器3 小时前
2026浏览器插件扩展安全风险溯源与环境隔离防护规范
经验分享·笔记
宵时待雨3 小时前
回溯算法专题1:递归
数据结构·c++·笔记·算法·leetcode·深度优先
今儿敲了吗4 小时前
面向对象(三)——设计模式
笔记·设计模式
是喵斯特ya4 小时前
红日内网靶场1渗透笔记
笔记·安全
一只机电自动化菜鸟4 小时前
一建机电备考笔记(34)焊接技术(设备与材料1)(含考频+题型)
笔记·学习·职场和发展·生活·学习方法