旧的快照文件夹内容不会自动删除(快照复制)

问题描述 投票:0回答:0

我正在使用 SQL 2017,SSMS v19.0.2

我成功地设置了快照复制,但是当我看到磁盘空间被消耗时不得不禁用它。

分发清理作业运行成功但报告没有删除:

DBCC 执行完成。如果 DBCC 打印出错误消息,请联系您的 系统管理员。 [SQLSTATE 01000](消息 2528)已删除 0 来自 MSrepl_commands [SQLSTATE 01000](消息 22121)每毫秒从 MSrepl_transactions 中删除 0 行 [SQLSTATE 01000](消息 22121)删除了 0 个复制的事务 在 10 毫秒内包含 0 个语句(0 行/毫秒)。 [SQLSTATE 01000](消息 21010)。步骤成功

当我有目的地执行存储过程时,我也收到一条成功消息,但文件和文件夹仍然存在:

EXEC dbo.sp_MSdistribution_cleanup @min_distretention = 0, @max_distretention = 6

如果我理解正确,如果我手动启动分发清理作业,我应该删除文件。

我遇到了来自快照代理的错误,但我正在将这些作为单独的问题来解决。这两个(我正在处理的错误在我看来无关):

  1. 数据库“...”无法打开。它正处于恢复过程中。 (我可以更好地安排事情。)
  2. 此版本的 SQL Server 不支持在“...”中引用数据库和/或服务器名称。”(我肯定会深入研究该视图。)

我从另一个SE帖子了解到:

快照代理只会尝试一次删除之前的快照 文件,所以如果那些文件在那一刻被锁定(由合并代理 例如),快照文件可能会被遗留下来。

我不认为锁定是问题,但这些文件在网络共享上,所以我认为是权限问题。我感到困惑的是,创建自己的作业的已启用快照复制过程可以将文件写入该位置,但不能在不至少报告失败的情况下删除它们。

我正在寻找有关故障排除的建议,例如没有错误消息的问题。

  1. 没有错误消息本身是否暗示了根本原因?
  2. 我可能会在其他地方找到错误消息,例如事件查看器吗?
  3. 我已验证 xp_cmdshell 在服务器上已启用。
  4. 我相信我应该能够通过手动执行 dbo.sp_MSdistribution_cleanup 来验证修复是否成功,并保证从磁盘中删除一些文件。可以在代理不运行的情况下执行此删除文件吗?如果有更好/不同的成功证书,请告诉我。
tsql database-replication
© www.soinside.com 2019 - 2024. All rights reserved.