MSSQL数据库备份+日志搜索


完成备份

SQL 全选
DECLARE @dbName sysname = DB_NAME();
DECLARE @filePath NVARCHAR(260);

SET @filePath = 
    'D:\DB_Backup\'
    + @dbName + '_full_' 
    + REPLACE(REPLACE(REPLACE(CONVERT(varchar(20), GETDATE(), 20), '-', ''), ' ', '_'), ':', '') 
    + '.bak';

PRINT @filePath;

declare @bkname nvarchar(100)
set @bkname = @dbName + ' 完整备份'
BACKUP DATABASE @dbName
TO DISK = @filePath
WITH 
    RETAINDAYS = 15,
    NOFORMAT, NOINIT,
    NAME = @bkname,
    SKIP, NOREWIND, NOUNLOAD, STATS=10;
GO

 

收缩日志

-- 保存当前数据库名
DECLARE @dbName SYSNAME = DB_NAME();  

-- 保存当前恢复模式
DECLARE @recoveryModel NVARCHAR(20);
SELECT @recoveryModel = recovery_model_desc 
FROM sys.databases 
WHERE name = @dbName;

-- 设置为 SIMPLE 模式以截断日志
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'ALTER DATABASE [' + @dbName + N'] SET RECOVERY SIMPLE';
EXEC(@sql);

-- 获取日志文件逻辑名
DECLARE @logFileName NVARCHAR(128);
SELECT @logFileName = name 
FROM sys.database_files 
WHERE type_desc = 'LOG';

-- 收缩日志文件到最小
SET @sql = N'DBCC SHRINKFILE ([' + @logFileName + N'], 1, TRUNCATEONLY)';
EXEC(@sql);

-- 恢复原来的恢复模式(FULL 或 BULK_LOGGED)
SET @sql = N'ALTER DATABASE [' + @dbName + N'] SET RECOVERY ' + @recoveryModel;
EXEC(@sql);
GO

删除30天前的备份文件

SQL 全选
-- 允许 xp_cmdshell(如果没启用过)
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

-- 删除一个月前的备份文件(假设备份目录是 D:\DB_Backup)
DECLARE @BackupPath NVARCHAR(255) = N'D:\DB_Backup';
DECLARE @cmd NVARCHAR(1000);

-- forfiles 命令:删除 30 天前的 .bak 文件
SET @cmd = 'forfiles /p "' + @BackupPath + '" /s /m *.bak /d -30 /c "cmd /c del @path"';
EXEC xp_cmdshell @cmd;

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:在 ASP.NET Core 中,如何手动序列化 JSON 并保持与系统一致?
下一篇:搭配Serilog一起使用的日志搜索分析方案
评论列表

发表评论

评论内容
昵称:
关联文章

MSSQL数据库备份+日志搜索
SQLServer数据库备份 [实践]
使用SQL 创建数据库备份作业
搭配Serilog一起使用的日志搜索分析方案
Docker中安装SqlServer后数据库备份错误
MSSQL卸载工具
MSSQL 常用查询集成工具 SQLServerTools
Python连接MSSQL数据库pyodbc方案
使用.NET 6开发TodoList应用(15)——实现查询搜索
YES-WIN Winform开发框架 日志管理升级指南
Winform开发框架日志管理
QuartZ输出日志级别设置
SqlServer备份还原 出现操作系统错误 5(拒绝访问) 的解决方案
VSCode 正则表达式跨行搜索
数据库插件 red-gate SQLToolbelt 下载地址
YESWEB接口日志记录
C#日志Log写入
Python使用SQL Server数据库
百度搜索结果列表html元素分析
在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码