方法一:使用 SQL Server Management Studio (SSMS) 图形界面
1. 查看 SQL Server 代理作业
备份计划通常作为 SQL Server 代理作业创建:
- 在对象资源管理器中连接到 SQL Server 实例
- 展开 SQL Server 代理 → 作业
- 查找包含 "backup"、"Backup" 或 "BACKUP" 关键字的作业
- 右键点击作业 → 属性 → 查看 步骤、计划 和 历史记录
2. 查看维护计划
备份可能作为维护计划的一部分:
- 展开 管理 → 维护计划
- 双击维护计划查看其包含的任务
- 查看任务属性中的备份配置和计划
方法二:使用 T-SQL 查询
1. 查询 SQL Server 代理作业(包含备份任务)
-- 查看所有作业
SELECT
job.job_id,
job.name AS job_name,
job.description,
job.enabled,
step.step_id,
step.step_name,
step.command
FROM msdb.dbo.sysjobs job
LEFT JOIN msdb.dbo.sysjobsteps step
ON job.job_id = step.job_id
WHERE step.command LIKE '%backup%'
OR step.command LIKE '%BACKUP%'
OR job.name LIKE '%backup%'
ORDER BY job.name, step.step_id;
-- 查看作业计划
SELECT
job.name AS job_name,
schedule.name AS schedule_name,
schedule.enabled,
schedule.freq_type,
schedule.freq_interval,
schedule.freq_subday_type,
schedule.freq_subday_interval,
schedule.freq_relative_interval,
schedule.freq_recurrence_factor,
schedule.active_start_date,
schedule.active_end_date,
schedule.active_start_time,
schedule.active_end_time
FROM msdb.dbo.sysjobs job
INNER JOIN msdb.dbo.sysjobschedules js
ON job.job_id = js.job_id
INNER JOIN msdb.dbo.sysschedules schedule
ON js.schedule_id = schedule.schedule_id
WHERE job.name LIKE '%backup%';
2. 查询备份历史记录
-- 查看最近的备份历史
SELECT
database_name,
backup_start_date,
backup_finish_date,
type,
backup_size,
recovery_model,
physical_device_name
FROM msdb.dbo.backupset bs
LEFT JOIN msdb.dbo.backupmediafamily bmf
ON bs.media_set_id = bmf.media_set_id
ORDER BY backup_start_date DESC;
-- 查看各数据库最后一次备份时间
SELECT
database_name,
MAX(CASE WHEN type = 'D' THEN backup_finish_date END) AS last_full_backup,
MAX(CASE WHEN type = 'I' THEN backup_finish_date END) AS last_differential_backup,
MAX(CASE WHEN type = 'L' THEN backup_finish_date END) AS last_log_backup
FROM msdb.dbo.backupset
GROUP BY database_name;
3. 查看维护计划信息
-- 查看维护计划
SELECT
plan_id,
id,
plan_name,
description,
owner,
enabled,
date_created
FROM msdb.dbo.sysmaintplan_plans;
-- 查看维护计划任务
SELECT
p.plan_id,
p.plan_name,
t.task_name,
t.task_type
FROM msdb.dbo.sysmaintplan_plans p
INNER JOIN msdb.dbo.sysmaintplan_subplans sp
ON p.plan_id = sp.plan_id
INNER JOIN msdb.dbo.sysmaintplan_tasks t
ON sp.subplan_id = t.subplan_id
WHERE t.task_name LIKE '%backup%';
方法三:使用 PowerShell 脚本
# 连接到 SQL Server 实例
$sqlServer = "YourServerName"
$database = "msdb"
# 查询备份作业
$query = @"
SELECT
j.name AS JobName,
j.enabled,
s.name AS ScheduleName,
s.enabled AS ScheduleEnabled,
s.freq_type,
s.freq_interval,
s.active_start_time
FROM msdb.dbo.sysjobs j
INNER JOIN msdb.dbo.sysjobschedules js ON j.job_id = js.job_id
INNER JOIN msdb.dbo.sysschedules s ON js.schedule_id = s.schedule_id
WHERE j.name LIKE '%backup%'
"@
Invoke-Sqlcmd -ServerInstance $sqlServer -Database $database -Query $query
常用系统表说明
| 系统表 |
描述 |
|---|
msdb.dbo.sysjobs |
存储 SQL Server 代理作业信息 |
msdb.dbo.sysjobsteps |
存储作业步骤信息 |
msdb.dbo.sysjobschedules |
作业与计划的关联关系 |
msdb.dbo.sysschedules |
计划详细信息 |
msdb.dbo.backupset |
备份集信息 |
msdb.dbo.backupmediafamily |
备份媒体信息 |
msdb.dbo.sysmaintplan_plans |
维护计划信息 |
实用建议
定期检查备份状态:确保备份作业正常运行
验证备份文件:定期测试备份文件的恢复性
监控备份大小和时长:确保备份窗口足够且存储空间充足
设置警报:配置备份失败的电子邮件或其它通知
文档化备份策略:记录完整的备份和恢复流程
通过以上方法,您可以全面了解 SQL Server 中的备份计划配置和执行情况。