Como iniciar o MSSQL Server com o db do modelo corrompido

3

Depois de mover alguns bancos de dados (restauração, exclusão, etc), tivemos um problema ao criar novos bancos de dados. Especificamente, ao tentar criar um novo banco de dados, o MSSQL Server falhou porque o "modelo de banco de dados 'está marcado como RESTORING e está em um estado que não permite a execução da recuperação". Como algumas soluções online sugeriram, tentamos iniciar e parar o serviço MSSQL. Serviço não seria reiniciado porque "não foi possível criar tempdb. Você pode não ter espaço em disco suficiente disponível. Liberar espaço em disco adicional, excluindo outros arquivos na unidade tempdb" (FYI: a unidade tem 100 GB de espaço livre). Tentei reiniciar a máquina em que o MSSQL Server está sendo executado. Quando o servidor voltou a ficar online, recebemos o mesmo erro. Tentamos excluir tempdb.mdf e restaurar o modeldb da pasta de modelos, mas nenhum deles resolveu o problema. Não podemos nos conectar ao banco de dados, mesmo no modo de usuário único. Muitas das soluções on-line nos obrigam a executar comandos SQL no servidor, mas não podemos nos conectar (mesmo no modo de usuário único) ao banco de dados para executar comandos no servidor.

Mensagens de erro específicas:

O banco de dados 'model' não pode ser aberto. Está no meio de uma restauração. (Microsoft SQL Server, erro: 927)

O serviço SQL Server (MSSQLSERVER) está sendo iniciado. O serviço do SQL Server (MSSQLSERVER) não pôde ser iniciado.

Ocorreu um erro específico do serviço: 1814.

Precisamos que o servidor volte a funcionar assim que possível.

    
por J.T. McGuigan 20.06.2012 / 22:54

2 respostas

3

Isso foi consertado por algum tempo (em 12 de julho) com uma chamada de suporte pago da Microsoft.

Como isso gerou muitas visualizações, decidi adicionar uma versão editada do nosso "resumo de e-mail" da chamada com a Microsoft.

Postado é um link para pastebin: link

Espero que esta informação ajude alguém com este problema

Problem Description:
=============================
You Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)  default instance on SERVERNAME server and you were trying to start the SQL SERVER service which was failing to start.


Analysis\Troubleshooting:
=============================

We checked the SQLS SERVER ERRORLOG

===========================
2012-06-20 19:33:41.48 Server      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
 Apr  2 2010 15:48:46
 Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.0 <X64> (Build 6001: Service Pack 1)

2012-06-20 19:33:41.50 Server      (c) Microsoft Corporation.
2012-06-20 19:33:41.50 Server      All rights reserved.
2012-06-20 19:33:41.50 Server      Server process ID is 2596.
2012-06-20 19:33:41.51 Server      System Manufacturer: 'HP', System Model: 'ProLiant DL360 G5'.
2012-06-20 19:33:41.51 Server      Authentication mode is MIXED.
2012-06-20 19:33:41.51 Server      Logging SQL Server messages in file 'D:\Mssql\Data\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG'.
2012-06-20 19:33:41.51 Server      This instance of SQL Server last reported using a process ID of 2816 at 6/20/2012 6:10:15 PM (local) 6/20/2012 10:10:15 PM (UTC). This is an informational message only; no user action is required.
2012-06-20 19:33:41.51 Server      Registry startup parameters:
  -d D:\Mssql\Data\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\master.mdf
  -e D:\Mssql\Data\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG
  -l D:\Mssql\Data\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
2012-06-20 19:33:41.56 Server      SQL Server is starting at normal priority base (=7). This is an informational message only. No user action is required.
2012-06-20 19:33:41.56 Server      Detected 4 CPUs. This is an informational message; no user action is required.
2012-06-20 19:33:41.65 Server      Using locked pages for buffer pool.
2012-06-20 19:33:41.88 Server      Using dynamic lock allocation.  Initial allocation of 2500 Lock blocks and 5000 Lock Owner blocks per node.  This is an informational message only.  No user action is required.
2012-06-20 19:33:42.33 Server      Node configuration: node 0: CPU mask: 0x000000000000000f:0 Active CPU mask: 0x000000000000000f:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
2012-06-20 19:33:42.49 spid7s      Starting up database 'master'.
2012-06-20 19:33:42.86 spid7s      Resource governor reconfiguration succeeded.
2012-06-20 19:33:42.86 spid7s      SQL Server Audit is starting the audits. This is an informational message. No user action is required.
2012-06-20 19:33:42.87 spid7s      SQL Server Audit has started the audits. This is an informational message. No user action is required.
2012-06-20 19:33:42.87 spid7s      FILESTREAM: effective level = 0, configured level = 0, file system access share name = 'MSSQLSERVER'.
2012-06-20 19:33:43.02 spid7s      SQL Trace ID 1 was started by login "sa".
2012-06-20 19:33:43.03 spid7s      Starting up database 'mssqlsystemresource'.
2012-06-20 19:33:43.05 spid7s      The resource database build version is 10.50.1600. This is an informational message only. No user action is required.
2012-06-20 19:33:43.24 spid10s     Starting up database 'model'.
2012-06-20 19:33:43.24 spid7s      Server name is 'SERVERNAME'. This is an informational message only. No user action is required.
2012-06-20 19:33:43.27 spid10s     The database 'model' is marked RESTORING and is in a state that does not allow recovery to be run.
2012-06-20 19:33:43.28 spid10s     Error: 927, Severity: 14, State: 2.
2012-06-20 19:33:43.28 spid10s     Database 'model' cannot be opened. It is in the middle of a restore.
2012-06-20 19:33:43.36 spid10s     Could not create tempdb. You may not have enough disk space available. Free additional disk space by deleting other files on the tempdb drive and then restart SQL Server. Check for additional errors in the event log that may indicate why the tempdb files could not be initialized.
2012-06-20 19:33:43.36 spid10s     SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no user action is required.
===========================

From ERRORLOG we can see that SQL SERVER trying to bring model database online but since model database in recovery state hence we were unable to run database recovery.

We also know that whenever SQL SERVER start we recreate TEMPDB database by coping the content from model database.

Now since model database didn’t started hence TEMPDB startup also failed which is one of critical system database and this caused SQL SERVER service to failed


Solution:
=====================================
·         To fix this issue we started SQL SERVER EXE with following parameter from command prompt


SQLSERVR.EXE -c -T3608

·         Then after we detached model database using following T-SQL


sp_detach_db model

·         Then after we attach the model database using following T-SQL


================================
USE MASTER
GO
CREATE DATABASE MODEL
      ON (FILENAME = 'C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MODEL.MDF')
      FOR ATTACH ;
================================

·         After that SQL SERVER service came online successfully
    
por 09.04.2013 / 06:46
1

Você pode iniciar o serviço sql ignorando a recuperação automática?

net start mssqlserver /f /m /t3608

tente recuperar o modelo?

sqlcmd -e 
restore database 
model go

edit: encontrado este link também, que entra em maior profundidade e é provavelmente mais preciso ..

    
por 21.06.2012 / 00:01