Como Identificar Problemas Com Bases de Dados SQL Server, Corrompidas ou Marcadas como “Suspect”

12 12 2009

 

Existem algumas situações que podem colocar uma base de dados SQL Server em modo suspeito:

  • Inconsistências no sistema de ficheiros, como erros ou sectores danificados do disco. Falha de um dos dispositivos de armazenamento.
  • Encerramentos anormais do computador, ou dos serviços associados ao SQL Server.
  • Falta de um dos ficheiros associados à base de dados.
  • Espaço em disco insuficiente.
  • Utilização em exclusivo da base de dados por aplicações de terceiros, como anti-vírus, aplicações de desfragmentação, etc.

 

 image

 

Quando alguma base de dados está marcada como suspeita ela não voltará ao seu estado normal até que alguma acção seja feita. Embora na maioria das situações seja possível volta corrigir a situação, podem existir efectivamente situações em que a mesma não seja recuperável, pelo menos em tempo útil.

 

No caso do Primavera Express, são apresentadas algumas mensagens que indiciam problemas com bases de dados:

 

Administrador > Manutenção > Propriedades da Base de Dados

image

“… It has been marked SUSPECT by recovery…”

 

 

Ao abrir o Primavera Express

image  “A Base de Dados da Empresa ‘Nome da Empresa’ não existe.”

 

 

Ao abrir as propriedades da empresa

image 

“A operação não é possível se o objecto estiver fechado”

 

 

Ao fazer Ctrl + Alt + P sobre a empresa

image “Cannot open database ‘Nome da Base Dados’ requested by the login. The login failed.”

 

 

Se existir um backup recente, como é obvio é mais rápido, fácil, e seguro restaurar o mesmo, ainda que se tenham de introduzir dados desde a data da cópia de segurança. Caso contrário não existirá outra alternativa a não ser recuperar a BD existente.

 

Para saber exactamente qual o erro gerado, é necessário consultar o gestor de eventos do Windows, já que o SQL regista todas as acções efectuadas, com êxito ou não. Ao fazer Iniciar > Executar, e escrever “eventvwr”, temos acesso a todos os eventos registados pelo quer pelo Windows, quer por outros serviços e aplicações.

image

 

 

Neste exemplo, a origem do problema está no facto de o log file (ficheiro LDF) não estar sincronizado com o ficheiro de dados, eventualmente por estar corrompido.

image

Com base no que nos é apresentado na descrição do erro, podemos agora iniciar a tentativa de recuperação da base de dados

Não existe nenhuma formula mágica que possa ser executada e que possa resolver todos os problemas, já que bases de dados em modo suspeito ou corrompidas podem ter como origem vários tipos de anomalias, e várias formas diferentes resolução.

 

 

A melhor forma de obter informação sobre o erro em questão é colocar num motor de busca termos os termos relacionados com por exemplo:

“ID do erro + versão do SQL + suspect”

ou

“database suspect sql server 2005”

image

Existem certamente, como neste exemplo, utilizadores que já passaram pelo mesmo problema, e que escreveram algo sobre o assunto.

 

Antes de iniciar qualquer tentativa de resolução do problema é conveniente fazer uma cópia dos ficheiros da base de dados, já que alguns comandos podem implicar perda ou alteração de dados.

 

Para fazer um backup dos ficheiros da base de dados terá primeiramente de parar o serviço SQL.

Menu Iniciar > Executar > Escrever “cmd” > Na linha de comandos escrever:

NET STOP “SQL SERVER (NOME DA INSTÂNCIA)”

No caso do Primavera Express, numa instalação por defeito, o nome da instância SQL é PriExpress.

image

Localize agora os ficheiros associados à base de dados. No caso do Primavera Express, os mesmos podem estar em:

C:\Programas\Microsoft SQL Server\MSSQL.1\MSSQL\Data

ou

C:\Programas\PRIMAVERA EXPRESS\SG6\Dados

No Primavera Express, como exemplo, se o código da empresa é MSM, os ficheiros associados à base de dados têm os nomes: PRIMSM_Data.mdf e PRIMSM_Log.ldf. Copie esses ficheiros para uma outra pasta.

Volte a arrancar com o serviço do SQL Server, executando novamente na linha de comandos: NET START “SQL SERVER (NOME DA INSTÂNCIA)”

image

 

 

Nota: No caso de não ter obtido êxito na recuperação do estado normal da base de dados, poderá contactar a software house, como a Primavera, ou um Administrador de Base de Dados, (DBA) já que normalmente oferecem suporte especializado neste tipo de situações.


Ações

Information

8 responses

16 02 2010
Rui

boa tarde.. estou a tentar colocar o primavera a utilizar multiposto…

porém, já tentei atraves da forma mais básica através do “assistente de inicialização de plataforma PRIMAVERA” inserindo o servidor de dados “nomedocomputador\PRIEXPRESS” e os dados de acesso “sa” (user) e “primavera” (password), porém, não consigo connectar… tentei também utilizar o “SQL Server Management Studio Express” porém não me consigo connectar também… será que me podem ajudar ?

Obrigado.

16 02 2010
Carlos

Olá.

Embora essa situação pareça ter mais a ver com a Firewall ( veja este post: https://invisibleflamelight.wordpress.com/2009/02/16/sql-server-2005-express-consideraes/ ), convém não esquecer que o Express funciona apenas em mono-posto, por isso é muito normal que não consiga fazer o que pretende.

17 02 2010
Rui

o primavera funciona em mono-posto, mas qualquer software que tenha uma BD em SQL consegue partilhar a mesma, estou certo ? :)

17 02 2010
Carlos

Sim e não! Embora o SQL permita, se configurado para isso, acessos via rede ao servidor, o Primavera poderá (não confirmo) ter mecanismos que impeçam o funcionamento da aplicação ao mesmo tempo em mais do que um posto.

Carlos

17 02 2010
Rui

penso que não Carlos, devido ao facto do ter a parte de “assistente de inicialização de plataforma PRIMAVERA” certo ? ou errado ?

penso que é assim, porém (nao confirmo também) pode acontecer de existir esse mesmo mecanismo, será que me podes ajudar de alguma forma ?

era bastante útil tanto para mim, como certamente para outras entidades que estejam a precisar de trabalhar em multi-posto.

17 02 2010
Carlos

Totalmente errado! Se conhecer outras versões do Primavera sabe que no Administrador, são controlados os postos/módulos que estão a aceder à plataforma, em tempo real.

No Express não aparece isso precisamente porque é monoposto. O assistente de incialização da plataforma serve para informar ao Primavera qual o servidor de dados SQL, onde se encontram as bases de dados já existentes, ou onde onde criar novas, isto numa primeira inicialização. Este procedimento é para ser feito uma só vez. (O Express como instala e cria a instancia SQL sempre com o mesmo nome não precisa que façamos esse passo).

Imagine que quer alojar as bases de dados num servidor onde tem o SQL 2005 instalado, então aí deverá fazer a inicialização indicando qual o servidor e instância SQL e o respectivo login.

Carlos

17 02 2010
Rui

ou seja.. eu penso qe assim sendo é possivel partilhar a BD com dois softwares (em postos diferentes) primavera. correcto ?

17 02 2010
XpecialGUEST

Uma coisa é ter acesso às bases de dados, seja localmente ou pela rede, e utilizando uma qualquer ferramenta de SQL, como o Management Studio. Outra coisa é o Primavera Express permitir múltiplos acessos à plataforma, e por conseguinte às Bases de Dados. Isto porque para as coisas funcionarem correctamente, a Plataforma tem de saber que o Posto A, B, ou C estão ligados!

Por exemplo, imagine que está a criar a Factura Nº 5 no posto 1 e no posto 2.
Como poderia a aplicação garantir que o último posto a gravar não iria subscrever o que já tinha sido gravado em primeiro lugar?

Não estou a dizer que não vai funcionar, porque nunca testei, só estou a dizer que a funcionar, o mais certo é ter problemas, porque nenhum dos postos vai saber da existência dos restantes, já para não falar dos mapas , preferências, e outros itens não serem centralizados!

Carlos

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s




%d bloggers like this: