SQL Server OS_Core 数据库全自动备份【完整笔记·可直接复用】

一、功能说明

本套方案为 OS_Core 数据库 生产级自动备份方案,特点:

  • 每日自动完整备份数据库
  • 自动带时间戳,不覆盖旧备份
  • 备份完成自动校验文件完整性
  • 自动清理7天前旧备份,防止磁盘爆满
  • 全程命令行部署,无需图形界面点来点去
  • 系统最高权限运行,杜绝权限报错

备份目录统一:D:\SQLbak

二、前期准备(必做)

手动在 D 盘新建文件夹:

D:\SQLbak

三、文件1:数据库备份脚本(Backup_OS_Core.sql)

保存路径:D:\SQLbak\Backup_OS_Core.sql

编码:ANSI

sql 复制代码
-- ==================【仅在此处修改数据库名称】==================
DECLARE @DB_NAME SYSNAME = N'OS_Core'
-- ============================================================

DECLARE @bakPath NVARCHAR(500)
SET @bakPath = N'D:\SQLbak\' 
    + @DB_NAME + '_Full_' 
    + REPLACE(REPLACE(CONVERT(VARCHAR,GETDATE(),120),':','_'),' ','_') 
    + '.bak'

PRINT 'Backup File Path:' + @bakPath;

BACKUP DATABASE @DB_NAME 
TO DISK = @bakPath
WITH 
    COMPRESSION,
    STATS=10;

PRINT 'Start verify backup file';
RESTORE VERIFYONLY FROM DISK = @bakPath;

PRINT @DB_NAME + ' backup finished and verified successfully'
GO

四、文件2:一键主控批处理(AutoBackup_OS_Core.bat)

保存路径:D:\SQLbak\AutoBackup_OS_Core.bat

作用:执行备份 + 自动删7天前旧备份

batch 复制代码
@echo off
chcp 65001 >nul
echo ==============================================
echo        OS_Core 数据库自动备份任务
echo ==============================================
echo.

:: 执行SQL备份
sqlcmd ^
-S WIN-AIOAD887H1C ^
-E ^
-d master ^
-i "D:\SQLbak\Backup_OS_Core.sql"

echo.
echo ----------------------------------------------
echo        自动清理7天前备份文件
echo ----------------------------------------------
forfiles /p "D:\SQLbak" /m *.bak /d -7 /c "cmd /c echo 已删除旧文件:@path && del /f @path"

echo.
echo ✅ 今日备份+清理任务全部完成
echo ==============================================

五、手动测试步骤(必须先测试再上定时任务)

  1. 双击运行:D:\SQLbak\AutoBackup_OS_Core.bat
  2. 观察输出:无报错、生成带时间戳的 bak 文件
  3. 出现「校验通过」说明备份文件 100% 可用

六、命令行部署定时任务(无图形界面、纯命令)

以管理员身份打开 PowerShell,执行下面整段代码:

powershell 复制代码
# 定义任务行为、时间、权限
$action = New-ScheduledTaskAction -Execute "D:\SQLbak\AutoBackup_OS_Core.bat"
$trigger = New-ScheduledTaskTrigger -Daily -At 02:00
$principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 5)

# 注册定时任务
Register-ScheduledTask -TaskName "OS_Core数据库每日自动备份" -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Description "每日凌晨2点自动备份OS_Core数据库,自动清理7天前备份"

七、定时任务常用管理命令(收藏备用)

1. 手动立即执行一次备份任务

powershell 复制代码
Start-ScheduledTask -TaskName "OS_Core数据库每日自动备份"

2. 查看任务状态

powershell 复制代码
Get-ScheduledTask -TaskName "OS_Core数据库每日自动备份"

3. 删除定时任务(重建时用)

powershell 复制代码
Unregister-ScheduledTask -TaskName "OS_Core数据库每日自动备份" -Confirm:$false

八、数据库恢复备用命令(应急必备)

1. 查看备份内文件信息

sql 复制代码
RESTORE FILELISTONLY FROM DISK=N'D:\SQLbak\你的备份文件.bak'

2. 覆盖恢复 OS_Core 数据库

sql 复制代码
RESTORE DATABASE [OS_Core] 
FROM DISK=N'D:\SQLbak\你的备份文件.bak'
WITH REPLACE,
MOVE N'OS_Core' TO N'D:\SQLData\OS_Core.mdf',
MOVE N'OS_Core_log' TO N'D:\SQLLog\OS_Core.ldf'

九、生产环境硬性规范(笔记重点)

  1. 禁止复制 mdf/ldf 当做正式备份
  2. 必须使用 bak 压缩备份 + 备份校验
  3. 本地只保留7天备份,节省磁盘
  4. 重要数据必须定期异地拷贝备份文件
  5. 定时任务使用 SYSTEM 最高权限,杜绝权限失败

十、整套流程总结(极简记忆)

建目录 → 放置sql脚本 → 放置bat脚本 → 手动测试运行 → PowerShell命令创建定时任务 → 全自动备份部署完成

相关推荐
j7~8 分钟前
【仿 RabbitMQ 项目】发布订阅消息队列 (篇八):交换机数据管理模块,分层类设计、SQLite 回调原理与代码实现
服务器·网络·数据库·消息队列·交换机·交换机数据管理·sqlite回调原理
HEJOO99 分钟前
iOS Dark Mode 适配笔记
笔记·ios·cocoa
PHP实战开发录11 分钟前
PHP上传文件为什么会被覆盖
数据库·mysql·php
小陈phd11 分钟前
深入理解agent学习笔记(五)——KV Cache友好的上下文设计
笔记·学习·spring
SelectDB技术团队24 分钟前
VARIANT 列接入网关 JSON 日志:建表、导入、子列查询与物化的完整步骤
大数据·数据库·人工智能·elasticsearch·搜索引擎·json·apache doris
涛思数据(TDengine)29 分钟前
TDengine IDMP 2.0.2 发布:元素关系可视化、数据建模与联邦查询三大升级
大数据·数据库·人工智能·时序数据库·tdengine·工业互联网·工业ai
霖霖71429 分钟前
【ESP32笔记】工程目录解析
笔记·单片机·mcu·物联网
小米里的大麦30 分钟前
17 MySQL 视图
数据库·mysql
ss27335 分钟前
PG实战笔记 | 07 PostgreSQL常见编译项及其作用
数据库·笔记·postgresql
沪上企服通35 分钟前
规则引擎版本化:把代账科目映射当 policy-as-code 管(上海 5 家样本对照)
笔记·架构