"Error 208: Invalid object name..."

Olá pessoal! Tudo certo?

Hoje vou abordar um problema que vivenciei em um SQL Server 2000 e gostaria de compartilhar com vocês uma das soluções para o mesmo.

O problema:

Quando tentei ver as propriedades de uma tabela do SQL Server recebi o erro abaixo:

Simulando o problema:

Primeiramente, no SQL Server 2000 tínhamos uma forma de manipular os objetos de sistema, deixo bem claro que o procedimento que irei passar não é recomendado! Portanto faça por sua própria conta e risco.
        
Primeiramente precisamos rodar a query abaixo para permitir “updates” nos catálogos de sistema do SQL Server:

exec sp_configure 'allow updates', 1
reconfigure
go

Executada a query acima, assumindo que a sua instância do SQL Server 2000 está com todas tabelas de sistema em dia, vamos pegar a mesma tabela na base master do erro que mostrei, chamada spt_values e renomeá-la, para isso, antes temos que executar um update no status da mesma com o comando abaixo:

update sysobjects
set status = status + 2147483648,
base_schema_ver = 0
where name = 'spt_values'
go

Agora vamos de fato renomear a mesma com o comando abaixo:

sp_rename spt_values, spt_values_old

Nosso cenário está pronto, para testar, clique com o direito em algum objeto, pode ser uma tabela mesmo, e tente ver suas propriedades, você irá tomar o erro abaixo:

Solucionando o problema:

Para solucionar este problema, basta rodar um script chamado u_tables.sql que estará localizado em seu diretório de instalação do SQL server dentro da pasta Install:

<Diretório de instalação>\MSSQL\Install

Para instâncias nomeadas…

<Diretório de instalação>\MSSQL$InstanceName\Install

O script irá recriar a tabela que corrompemos propositalmente e o problema estará solucionado.

Não se esqueça de desabilitar na sequência o “allow updates” não é recomendado que esta opção fique ativada.

Lembrando também que é sempre importante manter o backup em dia das bases de sistema, pois em situações como essa seria a forma mais indicada de sair do problema.

Pelo que li o problema também pode ocorrer em versões posteriores a 2000.

Fontes:



Espero que o post tenha sido útil pessoal! Um abraço!

Nenhum comentário:

Postar um comentário