处理损坏的 msdb ldf 文件的选项

处理损坏的 msdb ldf 文件的选项

规格:我们正在使用具有事务复制功能的 SQL Server 2005。

我们的 MSDB .LDF 文件最近已损坏,导致 MSDB 数据库被标记为“可疑”。我们在网上阅读了大量资料,了解到要修复此问题,您要么必须从备份中恢复,要么必须从 sql 安装脚本重建 MSDB。

由于我们没有备份,我们尝试运行安装脚本 instmsdb.sql(通过使用 -T3806 -m -c 启动参数和所有这些 jazz 运行 sql 服务器服务删除 msdb db 之后)。

这次成功了,所以我计划重建分发数据库和发布者,然后重新初始化订阅者。但是,当我尝试访问 Sql Server Mgmt Studio 菜单中与复制相关的任何内容时,我收到一条有关 msdb 中缺少表的错误。其中一个具体错误是“无效对象 msdb.dbo.MSdistributordbs”。

因此我认为系统处于中间状态 - 分发系统表已创建,但 msdb db 中不存在所需的复制特定表和 sps。

因此,我的问题是:

  1. 需要运行哪些脚本或存储过程才能使 msdb 准备好进行复制,以及/或
  2. 如何手动删除发布者和其他复制相关对象,以便我可以重新创建所有复制内容?
  3. 是否有可能在没有 ldf 文件的情况下在某个我错过的地方加载 msdb?

编辑:我尝试了另一件事 - 我在订阅服务器上启用了复制,将其 msdb mdf 和日志文件复制到“坏”服务器,并尝试附加它们。但是,我忘记了数据库不兼容,因为发布者是 sql server 2005,而订阅者是 sql server 2008。唉。否则,这可能有效(至少到了我可以删除并重新创建复制的地步)。

(顺便提一下,我们负责数据库备份脚本的“系统管理员”没有备份任何系统数据库。这个问题已经纠正了。唉)。

答案1

我已经很久没有使用复制了(也许您已经尝试过),但是您是否不能使用向导禁用发布者数据库和分发数据库,​​然后重新启用它们?

答案2

您只能使用 mdf 来附加数据库。 是指向将执行此操作的系统存储过程的链接,它还包含对已替换此过程的最新 CREATE DATABASE 语句的引用。我不知道这将如何工作在系统数据库中。

另一个选择是文档解释了如何使用系统存储过程调用删除复制。我曾经用它修复过一个出现问题的复制数据库。我不记得细节了,但 Management Studio 不允许您删除复制,因为它尚未设置,而且您无法创建发布,因为它已经存在。

更新:您是否尝试过使用 sp_dropdistributor proc。我会尝试一下,然后尝试重新创建/配置发布者和分发者。

相关内容