Fazer uma PerguntaFazer uma Pergunta
 

RespondidoSQL Server faz inserção em falso

  • quarta-feira, 4 de novembro de 2009 17:25André Aranha Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Olá pessoal,

    Estou com o seguinte problema:
    Tenho uma store procedure que, entre outras coisas, faz inserções em massa numa table (tbTabela1). Quando rodo a procedure, o BD até retorna a mensagem confirmando a inclusão ((x row(s) affected)), mas quando vou resgatar esses registros, descubro que eles não foram inseridos...

    O procedimento sempre funcionou, hoje de manhã que ele começou a inserir em falso. Estou usando INSERT com SELECT. Não e falta de COMMIT.

    Alguém sabe me informar o que pode ser?

    Obrigado

Respostas

  • quinta-feira, 5 de novembro de 2009 11:52André Aranha Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Olá Pessoal,

    Obrigado pela colaboração de todos.

    Mas quando fui abrir lá pra mexer, depois que acionei o módulo, o sistema passou a funcionar normalmente... :/ 
    Eu não fiz nada...

    Já tinha tentado o profiler, mas a última coisa que ele faz é selecionar os dados inseridos na tabela. Como não vinha nada, a thread da aplicação encerra;
    No servidor só tem uma instância e o BD que utilizo;
    Quando estava colocando o código para printar o @@TRANCOUNT, percebi que o problema não existia mais.

    Que coisa estranha... Alguém sabe o que é?
    De qqer forma, obrigado a todos.

Todas as Respostas

  • quarta-feira, 4 de novembro de 2009 17:39Marcelo Fernandes da Silva Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Ola Andre,

    Verifique se vc tem alguma trigger na tabela que esta impedindo esta acao.

    att.
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
  • quarta-feira, 4 de novembro de 2009 18:06William John Adam Trindade Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Se você nao apalicou nenhum patch e nao fez nenhuma alteraçao no codigo da SP, entao nao existe um motivo assim tao obvio... Como teve mudança do horario de verao esses dias, verifique se algo depende da hora do sistema. Eu tive esse problema ano passado.

    Att

    William

  • quarta-feira, 4 de novembro de 2009 18:17André Aranha Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Olá Marcelo e William
    Obrigado pelas respostas, mas não há nenhuma trigger e nada depende dos horários...

    Ele diz que inseriu, mas na verdade não inseriu...
  • quarta-feira, 4 de novembro de 2009 18:27William John Adam Trindade Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Use o Tracer. Veja o que pode estar acontecendo. Essa tabela tem algum campo Identity? Se nao e se for possivel, crie uma coluna de autonumeraçao. Eu faco isso quando quer ter certeza que algo nao foi inserido. Foi assim que eu descobri o problema com o horario ano passado.

    Att

    William
  • quarta-feira, 4 de novembro de 2009 18:48Junior Galvão - MVPMVPMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    André,

    Uma possibilidade é realizar o monitoramento além do trace file utilizando o Profiler!!!


    A idéia do William em relação a utilização do Identity é uma tecnica simples, prática e muito inteligente.

    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
  • quarta-feira, 4 de novembro de 2009 19:17Alexandre VM Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    E aí André, tranquilo?

    Por acaso não foi ativado o Implicit Transactions?

    Um teste rápido é dentro dessa proc, colocar um PRINT do @@TRANCOUNT, para listar quantas transações estão abertas.

    Além disso, coloque um código dentro da proc para consultar a tabela e ver se foi feito o insert corretamente.


    Abraço!!

    Classifiquem as respostas. O Fórum agradece!!
  • quarta-feira, 4 de novembro de 2009 19:25Corujao Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Boa tarde Andre.
    Sei que isto é obvio para um DBA com sua experiencia, mas ja vi acontecer com amigos muito experientes.
    Ja checou se a tabela atualizada na procedure é a mesma que você consulta depois?
    Mesmo eschema, mesmo banco, mesma instancia?

    As vezes as coisas mais simples nos escapam...

    Abraços.
  • quinta-feira, 5 de novembro de 2009 11:52André Aranha Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Olá Pessoal,

    Obrigado pela colaboração de todos.

    Mas quando fui abrir lá pra mexer, depois que acionei o módulo, o sistema passou a funcionar normalmente... :/ 
    Eu não fiz nada...

    Já tinha tentado o profiler, mas a última coisa que ele faz é selecionar os dados inseridos na tabela. Como não vinha nada, a thread da aplicação encerra;
    No servidor só tem uma instância e o BD que utilizo;
    Quando estava colocando o código para printar o @@TRANCOUNT, percebi que o problema não existia mais.

    Que coisa estranha... Alguém sabe o que é?
    De qqer forma, obrigado a todos.