我有一个数据库,它是一个镜像伙伴并进入挂起状态。(镜像服务器已关闭)。
我使用 SSMS 将主体数据库从镜像中取出。但现在我无法恢复镜像数据库,以便重新设置镜像。
当我ALTER DATABASE X SET PARTNER OFF
在镜像上运行时,SQL Server 记录
错误 3456(无法重做日志记录)
当我RESTORE
从备份中运行这个数据库时 - SQL Server 告诉我我不能,因为数据库涉及镜像。
有没有其他方法可以安全地删除这个数据库?出于同样的原因,我无法将其脱机,也无法将其删除。由于某种原因,我似乎无法删除 Mirror 上的镜像。谢谢
编辑:
我可能应该提供更多背景信息。出现这种情况是因为我在停止 SQL Server 和 SQL 代理服务之前关闭了操作系统。(假设操作系统会像其他服务一样触发这些服务的安全关闭,这是不明智的)。
这可能会导致某种损坏,使数据库无法编辑,甚至将其从镜像中删除。除了关闭 SQL Server 并移动.mdf / .ldf
文件然后重新启动它 - 还有其他选择吗?我真的可以尝试编辑.ldf
文件以删除违规记录或类似的东西吗?
首先关闭 Windows 而不先停止 SQL Server 不会导致这种情况。这不会对数据库造成任何不利影响,因为当 Windows 被告知关闭时,所有服务都会完全关闭。
我假设原理是离线的,不能带在线?
尝试强制数据库联机。
这应该使数据库联机,然后应该允许您删除镜像并删除数据库(或执行您需要对其执行的任何其他操作)。
错误 3456 是 LSN 不匹配错误,表示数据库已损坏。在此数据库中恢复将不会成功。由于删除数据库上的镜像涉及运行恢复并且由于损坏而无法进行恢复,我的猜测是您将无法成功尝试关闭合作伙伴,也不会尝试强制服务。由于数据库无论如何都已损坏(并且可能您的主数据库也已损坏,顺便说一句),因此尝试使该数据库联机的动力很小。您应该删除它并从已知的良好备份中创建一个新的。
这是Microsoft 已在累积更新 6中解决的已知问题。
我已关闭 SQL Server 服务并将
.mdf / .ldf
文件重命名为不同的文件并重新启动 SQL Server。然后我能够使数据库脱机。然后我能够放下它。我从主数据库恢复了数据库,随后能够设置镜像。
我仍然不知道为什么在操作系统失去网络连接期间会发生错误 3456。如果我发现(我希望我这样做)我会更新这个答案。感谢所有试图提供帮助的人。