Dispositivo em falta faz com que base de dados ser marcado como sendo suspeito

Traduções de Artigos Traduções de Artigos
Artigo: 180500 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sintomas

SQL Server marca suspeita de base de dados se algum dos ficheiros de base de dados do dispositivo for indisponível quando tenta iniciar. Poderá detectar um dos seguintes conjuntos de mensagens no registo de erro do SQL Server:
Mensagem de erro 1
96/11/18 10:48:32.60 kernel udopen: sistema operativo erro 32 (O
processo não é possível aceder ao ficheiro porque está a ser utilizado por outro
processo.) durante a abertura/criação do dispositivo físico,
C:\DATA\SQL\MSDB.DAT (ou C:\DATA\SQL\MSDB.MDF)

96/11/18 10:48:32.60 kernel udactivate (principal): Falha ao abrir
dispositivo C:\MSSQL\DATA\MSDB.DAT (ou C:\DATA\SQL\MSDB.MDF) para vdn 127
Mensagem de erro 2
96/11/18 10:48:32.60 kernel udopen: erro de sistema operativo (A 2
sistema não consegue localizar o ficheiro especificado.) durante a abertura/criação
física C:\MSSQL\DATA\MSDB.DAT de dispositivo (ou C:\DATA\SQL\MSDB.MDF)

96/11/18 10:48:32.60 kernel udactivate (principal): Falha ao abrir C:\MSSQL\DATA\MSDB.DAT do dispositivo (ou C:\DATA\SQL\MSDB.MDF) para vdn 127
Estes serão seguidas posteriormente no registo por:
96/11/18 10:48:36.70 kernel udread: erro de sistema operativo (A 6
o identificador é inválido.) 'C:\MSSQL\DATA\MSDB.DAT' do dispositivo (ou C:\DATA\SQL\MSDB.MDF) (virtpage
0x7f000018).

96/11/18 10:48:36.77 spid11 erro: 840, gravidade: 17, estado: 2

96/11/18 10:48:36.77 spid11 dispositivo MSDBData (com o nome físico
'C:\MSSQL\DATA\MSDB.DAT' (ou C:\DATA\SQL\MSDB.MDF) e número de dispositivo virtual 127) não é
está disponível. Contacte o administrador do sistema para obter assistência.

96/11/18 10:48:36.77 spid11 1092480 de memória intermédia da base de dados 'msdb'
tem o número da página 0 no cabeçalho da página e o número de página 24 no
cabeçalho de memória intermédia

96/11/18 10:48:37.43 spid11 não é possível continuar com a recuperação de
DBID <5> devido a erros anteriores. Continuar com a seguinte
base de dados.
Por exemplo, a execução dos seguintes passos demonstram o problema:
  1. Pare o SQL Server.
  2. Emita o seguinte comando numa linha de comandos no Mssql\Data directório:

    ren msdb.dat msdb.sav
  3. Inicie o SQL Server.
Poderá ver os erros acima (os do conjunto de segundo) errorlog do SQL Server. Se, em seguida, emitir a consulta seguinte na base de dados principal
   select name, dbid, mode, status from sysdatabases where dbid =
   db_id('msdb')
				

Receberá os seguintes resultados:
   name     dbid   mode   status
   ------------------------------
   msdb      5      0      328
				

O estado de 328 avalia:
   truncate log on chkpt
   database not recovered yet
   database is suspect
				

Para mais informações, consulte o tópico "Sysdatabases (apenas base de dados do modelo global de)" no SQL Server Books Online.

Causa

No arranque, o SQL Server tenta obter um bloqueio exclusivo no ficheiro de dispositivo. Se o dispositivo está a ser utilizado por outro processo (por exemplo, software de cópia de segurança) ou se o ficheiro estiver em falta, o cenário descrito irá ser encontrado. Nestes casos, é normalmente nada de errado com a base de dados e dispositivos. Para a base de dados recuperar correctamente, o dispositivo deve ser disponibilizado e tem de repor o estado da base de dados.

Como contornar

Para contornar este problema, execute os passos abaixo. Note que o passo final é crítico.
  1. Certifique-se que o ficheiro de dispositivo está realmente disponível.
  2. Utilize sp_resetstatus suplementares procedimento armazenado para repor o estado de uma base de dados suspeito. Se tiver não o fez, crie este procedimento através da execução do script Instsupl.sql, localizado no directório Mssql\Install. Para obter mais informações sobre sp_resetstatus, consulte o tópico "Repor o estado de sendo suspeito" no SQL Server Books Online.
  3. Executar sp_resetstatus na base de dados principal para a base de dados suspeito:
          use master
          go
          exec sp_resetstatus msdb   -- replace msdb with your database name
     
    						
    , verá o seguinte resultado:
          Prior to Update sysdatabases attempt for DBName='msdb', the mode=0
          and status=328 (status suspect_bit=256). For DBName='msdb' in
          sysdatabases, status bit 256 was forced Off and mode was forced to
          0. WARNING: You MUST stop/restart SQL Server prior to accessing this
          database!
     
    					
  4. Pare e reinicie o SQL Server.
  5. Verifique se a base de dados foi recuperado e está disponível.
  6. Executar DBCC NEWALLOC, DBCC TEXTALL e DBCC CHECKDB.

Mais Informação

Se a base de dados ainda estiver marcada como sendo suspeito depois de efectuar estes passos, poderão existir outros problemas que impedem a base de dados de recuperação. Neste ponto, pode restaurar a partir de uma boa cópia de segurança ou definido a base de dados para modo de emergência e utilize o programa de cópia em massa (BCP) para em massa copiar os dados fora. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
165918Modo ignorar (emergência) e copiar TRANSACTION WITH NO_LOG
importante Se utilizar este artigo (Q165918) e certeza das consequências completas de uma das acções que está a efectuar, contacte o fornecedor de suporte principal para obter assistência.

Propriedades

Artigo: 180500 - Última revisão: 30 de maio de 2006 - Revisão: 5.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
Palavras-chave: 
kbmt kbprb KB180500 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 180500
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com