none
Tabela SQL 2008 sendo zerada RRS feed

  • Pergunta

  • Bom dia

    Tenho um cliente com um banco de dados SQL com varias tabelas que é de acesso exclusivo de alguns logins do Windows apenas.

    A noite o banco é desconectado para ser feita uma copia fisica dos arquivos e em seguida conectado. 

    Ja aconteceu umas 10 vezes no prazo de um ano de apenas uma tabela do bancos, no primeiro acesso do dia, ser totalmente zerada. A tabela tem poucos campos, todos básicos,  sendo um de auto incremento e nela são incluídos apenas 10 a 15 registros no dia no máximo. A empresa roda o sistema em dois servidores separados, com banco de dados separados e no segundo servidor ja aconteceu de sumir os dados exatamente da mesma tabela. 

    Eu não sei mais o que fazer. Eu ja apaguei a tabela e a refiz manualmente. Não ha nenhuma instrução no programa que apague a tabela toda. Havia uma das maquinas que foi até tirada daquele departamento que apagava todo dia esta tabela. Mas tambem agora tem acontecido nas outras maquinas que acessam diariamente.

    Se alguém puder me dar uma luz eu agradeço imensamente. 

    Márcia 

    quinta-feira, 13 de agosto de 2015 13:40

Respostas

  • Olá Márcia,

    Respondendo a sua dúvida.
    Esse não é um comportamento do SQL Server, qual a versão do SQL Server vocês estão usando? O SQL Server foi desenvolvido para manter a consistência dos dados (não apenas isso, ele atende as normas ACID), portanto, ele não apagaria essas tabelas ou o conteúdo delas simplesmente do nada.

    É mais provável que o problema esteja nesse cópia de arquivos de dados que vocês estão fazendo ou um problema físico com o disco... Por que não trabalhar com uma rotina de Backup?

    Recomendo que você verifique a integridade desse disco com os comandos CHKDSK e CHKNTFS, evite essas cópias de arquivo tente mudar para uma rotina de Backup assim se qualquer falha ocorrer você pode voltar os dados com um restore.

    • Sugerido como Resposta Leoferreira quinta-feira, 13 de agosto de 2015 14:24
    • Marcado como Resposta Marcos SJ quinta-feira, 13 de agosto de 2015 14:28
    quinta-feira, 13 de agosto de 2015 14:24

Todas as Respostas

  • Olá Márcia,

    Respondendo a sua dúvida.
    Esse não é um comportamento do SQL Server, qual a versão do SQL Server vocês estão usando? O SQL Server foi desenvolvido para manter a consistência dos dados (não apenas isso, ele atende as normas ACID), portanto, ele não apagaria essas tabelas ou o conteúdo delas simplesmente do nada.

    É mais provável que o problema esteja nesse cópia de arquivos de dados que vocês estão fazendo ou um problema físico com o disco... Por que não trabalhar com uma rotina de Backup?

    Recomendo que você verifique a integridade desse disco com os comandos CHKDSK e CHKNTFS, evite essas cópias de arquivo tente mudar para uma rotina de Backup assim se qualquer falha ocorrer você pode voltar os dados com um restore.

    • Sugerido como Resposta Leoferreira quinta-feira, 13 de agosto de 2015 14:24
    • Marcado como Resposta Marcos SJ quinta-feira, 13 de agosto de 2015 14:28
    quinta-feira, 13 de agosto de 2015 14:24
  • Leo, boa tarde e obrigada pela atenção

    Respondendo, eu uso o SQL 2008 e eu estou fazendo backup sim, portanto até o momento nada foi efetivamente perdido.

    Mas eu gostaria muito de saber o que esta acontecendo e se eu estou fazendo algo de errado. 

    Repassando:

    - são apagados todos os registros de uma unica tabela, sempre a mesma. (como um delete) 

    - Como a empresa tem duas filias alocadas no mesmo lugar, ha um segundo servidor com o mesmo programa e layout de banco de dados, e nessa segunda base foram apagados os dados da mesma tabela. Portanto o problema não é no disco, nem nos dados. 

    - O copia noturna que eu comentei consiste em desligar o servico SQL, fazer a copia fisica do diretorio e religar o serviço SQL. Há algum problema em fazer isso diariamente? Eu so comentei porque os dados são apagados (ate onde eu identifiquei) sempre no primeiro acesso pela manhã. 

    - O sistema que utiliza o banco é feito em Delphi e ja tem uns 6 anos. Essa historia começou a mais ou menos um ano atras sem que se tenha feito nenhuma atualização significativa no programa. Não custa mencionar, que obviamente não ha nenhuma instrução em Delphi no sistema que de um delete em nenhuma das tabelas utilizadas. 

    - O problema começou com uma estacão especifica que por um tempo causou  o problema diariamente nas duas bases de dados. Esta maquina não esta esta sendo mais usada, mas voltou a acontecer bem mais esporadicamente a partir das outras estacoes. 

    -  o meu acesso ao banco de dados é feito por login e senha único para todos e não por login do windows. Cada login tem acesso a pastas especificas do servidor (por area) e ai ele pode rodar somente os programas que estão nas pastas que ele tem acesso. Ou seja, quem bloqueia o acesso a uma determinada pasta é o windows.  

    - Quanto a maquina que iniciou o problema ha uma dado interessante: de um dia para outro o Windows negou acesso ao arquivo de banco de dados via programa. Não logava de jeito nenhuma e dizia que o banco não existia. Eu desenvolvo apenas os sistemas e ha uma empresa que administra a rede e os acessos. Eles ficaram dois dias tentando voltar este acesso, ja que não havia ali nenhuma instrução diferente das outras maquinas. Depois de mil e uma alterações nas configurações de acesso do Windows eles conseguiram e no dia seguinte começou o problema de perda da tabela. 

    - Eu tenho vários sistemas, como tabelas gigantescas que são abastecidas por centenas de dados diariamente e nunca perdi uma unica linha. A tabela que esta sumindo é uma tabela "merreca" que tem uns 15k de registros referentes a vários anos. Uma vez por mes ha um processamento "grande" de 100 uns registros, mas diariamente eles abastecem/atualizam no maximo 10 registros.

    Alguma ideia? 

    Obrigada

    Márcia 

    quinta-feira, 13 de agosto de 2015 17:18
  • Que caso mais estranho, dados sumindo...

    Recomendo um trace de SQL Server profiler durante o processo de cópia dos arquivos. Execute um DBCC CHECKDB antes do processo e depois para verificar a integridade do arquivo.

    É o que pode ser feito... O Profiler para pegar se tem alguma query "truncando" ou apagando os dados da tabela, o Dbcc para ver se o banco está integro.


    • Editado Leoferreira quinta-feira, 13 de agosto de 2015 17:58 erro
    quinta-feira, 13 de agosto de 2015 17:49
  • Boa tarde Marcia.

    Realmente muito estranho esse acontecimento, uma forma de descobrir o que esta acontecendo pode ser a que o Leo citou, através do Profile ligue um trace para ver os comando executados durante o processo.

    Você pode programar o trace para rodar especificamente neste processo, se possível aplique filtros no seu trace para que não fique capturando informações desnecessárias.

    Att

    Reginaldo Silva

    quinta-feira, 13 de agosto de 2015 18:42
  • Obrigada pelas respostas

    Vou tentar o sugerido e vou dando noticias. 

    Márcia 

    segunda-feira, 17 de agosto de 2015 21:05