Ir para conteúdo
Fórum Script Brasil
  • 0

Para Feras: Dados Misturados Em Procedure


Guest - LEONARDO -

Pergunta

Guest - LEONARDO -

sad.gif Amigos,

tenho uma aplicação web que envia informações para uma procedure do sql server. Esta procedure realiza alguns calculos e armazena os resultados numa tabela. A página asp então acessa os dados da tabela e exibe estas informações.

No entanto, quando vários usuários utilizam a aplicação ao mesmo tempo, os cálculos (dentro da procedure) ficam malucos.

Já criei uma chave GUID para cada usuário mas as informações dos diferentes usuários continuam se misturando, distorcendo o resultado final.

Alguém sabe como posso isolar de forma definitiva cada usuário para que não haja interferência nos calculos internos da procedure?

É possível criar algum tipo de seção dentro do sql server para resolver isto?

Valeu!

Leonardo

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
sad.gif Amigos,

tenho uma aplicação web que envia informações para uma procedure do sql server. Esta procedure realiza alguns calculos e armazena os resultados numa tabela. A página asp então acessa os dados da tabela e exibe estas informações.

No entanto, quando vários usuários utilizam a aplicação ao mesmo tempo, os cálculos (dentro da procedure) ficam malucos.

Já criei uma chave GUID para cada usuário mas as informações dos diferentes usuários continuam se misturando, distorcendo o resultado final.

Alguém sabe como posso isolar de forma definitiva cada usuário para que não haja interferência nos calculos internos da procedure?

É possível criar algum tipo de seção dentro do sql server para resolver isto?

Valeu!

Leonardo

você já tentou usar o Begin transaction e o commit?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - LEONARDO -

Lisandro,

já tentei e não funcionou.

Na verdade, quando a aplicação é executada somente uma por um usuário ela funciona perfeitamente.´

Porém, quando mais de um usuário está executando, o problema ocorre.

Valeu!

Link para o comentário
Compartilhar em outros sites

  • 0
Lisandro,

já tentei e não funcionou.

Na verdade, quando a aplicação é executada somente uma por um usuário ela funciona perfeitamente.´

Porém, quando mais de um usuário está executando, o problema ocorre.

Valeu!

Leonardo, andei procurando alguma coisa mas realmente isso é estranho, quando cada usuario chama a mesma procedure ela abre na sessão dele mesmo sendo ao mesmo tempo, você não pode colocar a proc aí?? provavelmete ela deve estar criando algum objeto global que pode ser visto por outras sessões de usuario

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Leonardo -

Lisandro,

criamos vários usuarios no sql server e executamos separadamente (Uma medida bem drástica!) e mesmo assim não funcionou.

Um usuário do sql server para cada usuario da aplicação. Mesmo assim o problema ocorreu.

Isso teoricamente resolveria os problemas relacionados à seções, mas não resolveu.

Tá bruabo!

Valeu!

Link para o comentário
Compartilhar em outros sites

  • 0
Lisandro,

criamos vários usuarios no sql server e executamos separadamente (Uma medida bem drástica!) e mesmo assim não funcionou.

Um usuário do sql server para cada usuario da aplicação. Mesmo assim o problema ocorreu.

Isso teoricamente resolveria os problemas relacionados à seções, mas não resolveu.

Tá bruabo!

Valeu!

Leonardo então o problema não está nas sessões de usuarios, se você não pode colocar a proc aqui então analise o codigo da procedure veja se não esta criando nada global, (não é temporario #, o temporario é excluido quando a sessão é finalizada), é Global!!, Veja se não tem nenhum codigo chamando algum valor qualquer, analise as variaveis, tudo da proc. ohmy.gif

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Andre Lopes

Seguinte,

Voce tem duas maneiras de tentar resolver isso. Voce poderia primeiro ao invés de trabalhar com tabelas estáticas, utilizar-se de tabelas temporárias, ao qual cada usuário que fosse acessar a base de dados a procedure trata ele como uma sessão independete(isso funciona em PHP, não sei em ASP).

Outra alternativa seria voce ter mesmo essa tabela criada na base de dados e acrescentar mais um campo nela camado 'usuario', e nesse campo quando a procedure grava as informações voce acrescenta o usuário que esta logado, com isso quando voce fizer um select nessa tabela, voce pede para trazer as informações referentes aquele usuário!!

Dessa maneira funcionaria, pelo menos é o que eu entendi do seu problema!!

Sds,

Andre Lopes

morrab@gmail.com

MSN : andre_lombes@hotmail.com

Link para o comentário
Compartilhar em outros sites

  • 0

Existe uma ferramenta em ASP que se chama lock.application e unlock.application . você configura certinho isso no arquivo global.asa

quando você usa essa ferramenta, se determinado usuario entrar em determinada área de código, todos os outros usuário que possivelmente forem entrar na mesma area do código terão que esperar, como se fosse uma fila, e só quando o usuário que já estiver no código bloqueado sair dele, o próximo usuario da fila terá acesso ao código...

você pode chamar o lock.application antes de chamar o stored procedure e liberar a fila (unlock.application) quando o resultado for exibido p/ o usuario...

veja no forum de ASP como usa direitinho essa ferramenta (Lock e Unlock) que talvez possa te ajudar...

ah, e é bom quando for iniciar a variavel no stored procedure, você zerar todas elas, só por precaução...

até mais

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...