qqq_cn 2023-11-09 09:06 采纳率: 0%
浏览 128

SQL Server收缩数据库失败:请在当前备份或文件操作完成后重新发出该语句

sql server 2014,创建了维护计划每天执行,其中有三个步骤,清除前一天的备份文件、备份数据库、收缩数据库,近期第三个步骤总是在周二失败,从报错信息来看,应该是备份步骤还没有结束时就开始收缩,但感觉不可能啊,那样不就是sql server的BUG了吗,服务器管理员也没查出原因,个人认为就是哪个进程在读取数据库文件,导致sql server 不能收缩,但也没找到是哪个进程。 报错信息如下:

日期 2023/11/7 0:05:00
日志 作 业历史记录 (BackupDB.Subplan_1)

消息
已以用户 NT Service\SQLSERVERAGENT 的身份执行。 Microsoft (R) SQL Server 执行包实用工具 Version 12.0.5000.0 for 64-bit
版权所有(C) Microsoft Corporation。保留所有权利。 开始时间: 0:05:01 进度: 2023-11-07 00:05:02.34 源:
{49974835-D313-4DBD-B5BC-4201F0AB3011} 正在执行查询“DECLARE @Guid UNIQUEIDENTIFIER
EXECUTE msdb.sp.”。: 100% 完成 进度结束 进度: 2023-11-07 00:05:02.49
源: “清除维护”任务 正在执行查询“EXECUTE master.dbo.xp_delete_file 0,N'D:\bak',N'ba.”。: 100% 完成
进度结束 进度: 2023-11-07 00:05:02.81 源: “备份数据库”任务
正在执行查询“EXECUTE master.dbo.xp_create_subdir N'd:\bak\AIS20.”。: 50% 完成 进度结束 进度: 2023-11-07 00:05:02.81
源: “备份数据库”任务 正在执行查询“EXECUTE master.dbo.xp_create_subdir N'd:\bak\K3DBC.”。: 100%
完成 进度结束 进度: 2023-11-07 00:37:09.95 源: “备份数据库”任务
正在执行查询“BACKUP DATABASE [AIS20150613103711] TO DISK = N'd.”。: 100% 完成 进度结束 进度: 2023-11-07 00:37:13.55
源: “备份数据库”任务 正在执行查询“BACKUP DATABASE [K3DBConfiger20222212] TO DISK = .”。: 100% 完成 进度结束
进度: 2023-11-07 00:37:13.77 源: “收缩数据库”任务 正在执行查询“USE [AIS20150613103711] ”。: 50% 完成 进度结束
错误: 2023-11-07 00:37:35.21 代码: 0xC002F210 源: “收缩数据库”任务 执行 SQL 任务
说明: 执行查询“DBCC SHRINKDATABASE(N'AIS20150613103711', 10, TRUN.”失败,
错误如下:“对数据库的备份、文件操作(如 ALTER DATABASE ADD FILE)以及加密更改必须序列化。
请在当前备份或文件操作完成后重新发出该语句。”。失败的原因可能有: 查询本身有问题、未正确设置 "ResultSet" 属性、
未正确设置参数或未正确建立连接。 错误结束 进度: 2023-11-07 00:37:35.22 源: “收缩数据库”任务
正在执行查询“USE [K3DBConfiger20222212] ”。: 50% 完成 进度结束 进度: 2023-11-07 00:37:36.15
源: “收缩数据库”任务 正在执行查询“DBCC SHRINKDATABASE(N'K3DBConfiger20222212', 10, T.”。: 100% 完成
进度结束 警告: 2023-11-07 00:37:36.15 代码: 0x80019002 源: Subplan_1
说明: SSIS 警告代码 DTS_W_MAXIMUMERRORCOUNTREACHED。Execution 方法成功,
但出现的错误数(1)达到了允许的最大值(1),因此导致失败。当错误数达到 MaximumErrorCount 中指定的数目时将发生这种情况。
请更改 MaximumErrorCount 或纠正这些错误。 警告结束 DTExec: 已返回包执行 DTSER_FAILURE (1)
。 开始时间: 0:05:01 完成时间: 0:37:36 占用时间: 1955.06 秒. 包执行失败。. 该步骤失败。

  • 写回答

1条回答 默认 最新

  • 木头人123。 2023-11-09 09:19
    关注

    这个错误可能是由于在收缩数据库操作执行时,备份操作还在进行中,或者有其他的数据库操作(如ALTER DATABASE ADD FILE)在进行。这是因为这些操作需要序列化,不能并行执行。

    有几种可能的解决方案:

    1. 调整你的维护计划,确保备份操作和收缩操作不会在同一时间执行。例如,你可以将它们安排在不同的时间段,或者在备份操作完成后加入一些延迟时间,再执行收缩操作。

    2. 如果可能,尝试关闭其他可能在进行数据库操作的应用或服务,至少在执行维护计划时关闭它们。

    3. 检查你的数据库,看看是否有其他的操作正在进行。你可以使用SQL Server Management Studio的“活动监视器”来查看当前的数据库活动。

    4. 最后,你也可以考虑使用T-SQL脚本来执行你的维护计划,而不是使用SQL Server Agent作业。这样,你可以更精细地控制操作的执行顺序和时间。例如,你可以使用WAITFOR DELAY语句在备份和收缩操作之间加入延迟。

    希望这些建议能帮到你。如果问题仍然存在,你可能需要进一步检查你的数据库和服务器配置,或者寻求专业的SQL Server支持。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月9日