You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已禁用Managed Backup仍生成.xel文件,如何彻底停止?

彻底停止SQL Server 2019中Managed Backup关联的.xel扩展事件文件生成

1. 检查并停止相关扩展事件会话

Managed Backup的扩展事件会话可能仍在后台运行,即使你已禁用功能。执行以下SQL查询找出目标会话:

SELECT name, state_desc 
FROM sys.dm_xe_sessions 
WHERE name LIKE '%ManagedBackup%' OR name LIKE '%Azure%Backup%';

如果查询结果中存在状态为RUNNING的会话,先停止它:

ALTER EVENT SESSION [会话名称] ON SERVER STATE = STOP;

同时禁用会话的自动启动,避免SQL Server重启后再次运行:

ALTER EVENT SESSION [会话名称] ON SERVER WITH (STARTUP_STATE = OFF);

2. 清理数据库级别的Managed Backup配置

即使实例级Managed Backup已禁用,部分数据库可能仍保留独立配置。执行以下查询查看当前配置:

EXEC msdb.dbo.managed_backup.sp_get_backup_configuration;

针对仍启用备份的数据库,执行命令禁用:

EXEC msdb.dbo.managed_backup.sp_backup_config_basic 
    @database_name = '目标数据库名',
    @enable_backup = 0;

如果需要批量清理所有用户数据库的配置,可使用游标脚本:

DECLARE @db_name NVARCHAR(128);
DECLARE db_cursor CURSOR FOR 
    SELECT name FROM sys.databases WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb');
OPEN db_cursor;
FETCH NEXT FROM db_cursor INTO @db_name;
WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC msdb.dbo.managed_backup.sp_backup_config_basic 
        @database_name = @db_name,
        @enable_backup = 0;
    FETCH NEXT FROM db_cursor INTO @db_name;
END
CLOSE db_cursor;
DEALLOCATE db_cursor;

3. 禁用/删除Managed Backup相关SQL Server代理作业

Managed Backup会自动创建代理作业(如ManagedBackupMasterJob、ManagedBackupWorkerJob),这些作业可能持续触发扩展事件。先查询现有相关作业:

SELECT name, enabled 
FROM msdb.dbo.sysjobs 
WHERE name LIKE '%ManagedBackup%';

禁用作业(保留用于后续可能恢复):

EXEC msdb.dbo.sp_update_job 
    @job_name = '作业名称',
    @enabled = 0;

或直接删除作业:

EXEC msdb.dbo.sp_delete_job 
    @job_name = '作业名称';

4. 验证停止效果

完成上述操作后,等待1-2小时,检查SQL Server默认日志文件夹(通常路径为C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log),确认是否还有新的.xel文件生成。也可通过以下SQL查询确认会话输出路径及状态:

SELECT s.name AS session_name, t.target_name, c.value AS file_path
FROM sys.dm_xe_sessions s
JOIN sys.dm_xe_session_targets t ON s.address = t.event_session_address
JOIN sys.dm_xe_object_columns oc ON t.target_name = oc.object_name
JOIN sys.dm_xe_session_object_columns c ON t.event_session_address = c.event_session_address 
    AND oc.column_name = c.column_name
WHERE oc.column_name = 'filename' AND s.name LIKE '%ManagedBackup%';

内容的提问来源于stack exchange,提问作者EntDBA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 01:52:27