将 MSDB 数据还原到新服务器

pau*_*ulH 7 sql-server-2008-r2

我正在尝试将所有内容从 SQL Server 2008 R2(企业)实例移动到不同服务器上的新实例。为此,我认为(经过一些研究)我可以移动系统数据库 - master、msdb 和 model。

为了实现这一点,我已经备份了所有系统和用户数据库,我正在尝试将它们恢复到新实例。注意新实例是同一个版本的SQL,只是IP地址、实例名和端口都不一样。

我已经成功恢复了主数据库。但是当我尝试恢复 msdb 数据库时,它似乎不起作用。

我使用的命令是:

restore database msdb from disk='\\webapp\SQLBackups$\msdb.bak' with replace,recovery
Run Code Online (Sandbox Code Playgroud)

我收到的回复是:

处理了数据库“msdb”的 2912 页,文件 1 上的文件“MSDBData”。处理了数据库“msdb”的 1 页,文件 1 上的文件“MSDBLog”。消息 3283,级别 16,状态 1,服务器 SQLServerName\Instance_Name,第 1 行文件“MSDBLog”未能正确初始化。检查错误日志以获取更多详细信息。消息 3013,级别 16,状态 1,服务器 SQLServerName\Instance_Name,第 1 行 RESTORE DATABASE 异常终止。

如果我尝试执行:

restore database msdb with recovery
Run Code Online (Sandbox Code Playgroud)

我收到:

由于未恢复日志,无法恢复数据库。

我没有日志备份,因为 msdb 数据库处于“简单”恢复模式。所以我回到原来的服务器,将恢复模式切换到“完整”,创建一个新的完整备份和日志备份,然后尝试恢复这个新备份,但仍然得到相同的结果。如果我尝试访问 SSMS 中的任何内容,我只会收到一条消息,指出无法打开 msdb 数据库,因为它正处于还原过程中。

所以我似乎被卡住了。我无法使用服务器,因为它认为它正在恢复中。我不能删除 msdb 数据库,因为它是一个系统数据库。我无法完成恢复,因为无论我尝试什么选项,无论使用什么备份文件,我仍然收到消息“文件“MSDBLog”未能正确初始化”。

有任何想法吗?

Pol*_*usB 4

我做过这样的迁移,我再也不想这样做了。但如果你真的想做的话,这是可行的。这是我的建议:

  1. 确保两个实例上的版本完全相同。

    选择 SERVERPROPERTY('产品版本')

  2. 如果根文件夹位于同一路径中,迁移会更容易。如果你不能这样做,那就复杂得多,我强烈建议采取另一条路。顺便说一句,我用 SQL 2000 做到了这一点。现在我认为您可以一次性复制 ROOT 文件夹。如果未迁移目录和复制快照文件夹等,某些文件(例如 FullText)将失败...记下所有数据文件路径:

    从 master..sysaltfiles 中选择 *

  3. 如果您不能将用户数据库放在同一位置,也没什么大不了的。您稍后将附加它们。

  4. 开始礼拜并祈祷。

现在回到恢复 MSDB 和 MODEL。在你的特定问题中。您上次的恢复已完成,但没有恢复。MSDB 不一致且无法恢复。我建议您以单用户模式重新启动 SQL Server(使用 -m 启动参数),然后 DROP MSDB 并再次恢复它。