无法启动 SQL Server,模型 db 处于 RESTORING 状态

Vla*_*sky 4 sql-server sql-server-2008-r2

快速运行:

当系统管理员收到model正在恢复的错误时,第一个问题就开始了。

一段时间后,供应商尝试对数据库进行一些升级。当他们重新启动 SQL Server 时,它无法启动。

查看错误日志。我发现以下错误

错误 数据库“模型”被标记为 RESTORING 并且处于不允许运行恢复的状态。错误:927,严重性:14,状态:2。无法打开数据库“模型”。它正处于恢复过程中。无法创建临时数据库。您可能没有足够的可用磁盘空间。通过删除 tempdb 驱动器上的其他文件释放额外的磁盘空间,然后重新启动 SQL Server。检查事件日志中是否有其他错误,这些错误可能表明无法初始化 tempdb 文件的原因。

在网上搜索后在MSDN上找到了这篇文章

使用文章中的步骤启动 sql serverSqlservr.exe -sInstanceName -T3608 -c -f -T3609当我尝试运行时使用Use tempdb得到错误消息。按照文章中的建议,我从另一台服务器复制了 tempdb.mdf 和 templog.ldf。

现在我收到以下错误:

Starting up database 'tempdb'. Error: 3456, Severity: 21, State: 1. Could not redo log record (19:45:366), for transaction ID (0:0), on page (1:16), database 'tempdb' (database ID 2). Page: LSN = (18:72:8), type = 1. Log: OpCode = 18, context 2, PrevPageLSN: (19:45:287). Restore from a backup of the database, or repair the database.

Vla*_*sky 5

在尝试了大量替代步骤后,能够解决问题并启动数据库。

以下是我采取的步骤:

  • 在另一个 SQL Server 2008 R2 上,我将我的modeltempdb 文件移动到与我的问题服务器上相同的位置。请参阅此http://technet.microsoft.com/en-us/library/ms345408.aspx

  • 替换了我的问题服务器上的模型和 tempdb .mdf 和 .ldf 文件。我保存在另一个目录中的旧文件以防万一。

  • 尝试启动 SQL Server 服务,验证错误消息

数据库“模型”被标记为 RESTORING 并且处于不允许运行恢复的状态。错误:927,严重性:14,状态:2。无法打开数据库“模型”。它正处于恢复过程中。无法创建临时数据库。您可能没有足够的可用磁盘空间。通过删除 tempdb 驱动器上的其他文件释放额外的磁盘空间,然后重新启动 SQL Server。检查事件日志中是否有其他错误,这些错误可能表明无法初始化 tempdb 文件的原因。

之后,我打开了两个单独的命令提示符窗口。

下面为了方便起见,我调用第一个命令提示符窗口 CPA,第二个调用 CPB。

  • 在 CPA 运行中Sqlservr.exe -sInstanceName -T3608 -c -f -T3609(注意:我必须导航到二进制位置)不要忘记InstanceName用你的替换
    • -T3609 跳过创建 tempdb
  • 在 CPB 中运行SQLCMD -E -SADMIN:Servername\InstanceName替换为您的 ServerName\InstanceName。使用专用管理员连接
  • 在 CPB 中运行sp_detach_db 'model'然后go
  • 在 CPB 中运行以下代码,只需替换为您的文件位置。

CREATE DATABASE [model] ON
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.R2\MSSQL\DATA\model.mdf' ),
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.R2\MSSQL\DATA\modellog.ldf' ) FOR ATTACH
go
Run Code Online (Sandbox Code Playgroud)
  • 在 CPA 中,您应该看到Starting 'MODEL'消息
  • 在 CPA 命中Ctrl+ 中C,如果您想退出命中将显示消息Y

使用 SQL Server 配置管理器或服务页面启动 SQL Server 服务。

在我能够使用 SSMS 进行连接之后。