规格:我们正在使用具有事务复制功能的 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。
因此,我的问题是:
- 需要运行哪些脚本或存储过程才能使 msdb 准备好进行复制,以及/或
- 如何手动删除发布者和其他复制相关对象,以便我可以重新创建所有复制内容?
- 是否有可能在没有 ldf 文件的情况下在某个我错过的地方加载 msdb?
编辑:我尝试了另一件事 - 我在订阅服务器上启用了复制,将其 msdb mdf 和日志文件复制到“坏”服务器,并尝试附加它们。但是,我忘记了数据库不兼容,因为发布者是 sql server 2005,而订阅者是 sql server 2008。唉。否则,这可能有效(至少到了我可以删除并重新创建复制的地步)。
(顺便提一下,我们负责数据库备份脚本的“系统管理员”没有备份任何系统数据库。这个问题已经纠正了。唉)。
答案1
我已经很久没有使用复制了(也许您已经尝试过),但是您是否不能使用向导禁用发布者数据库和分发数据库,然后重新启用它们?