STORE PROCEDURE - EXECUSAO ASSICRONA

USUARIO.EXCLUIDOS 05/07/2007 16:40:11
#224893
Olá

Tenho uma aplicação que tem de chamar uma store procedure muito demorada. Ela roda durante uns 2 minutos.
Queria saber se tem alguma forma, chamada de dll ou outra forma de chamar a store sem ser já comum cn.Execute <comando>, que não trave a minha aplicação enquanto o processo ainda esteja rodando no server... algo como a chamada assincrona dos webservices, sei lá tÃÂ' chutando...

será que isso é possivel no vb 6 ?
DODOMR 05/07/2007 17:27:38
#224908
Já tentou o DoEvents

USUARIO.EXCLUIDOS 05/07/2007 17:41:11
#224913
Então... eu não tenho controle do que tá executando, não é um loop dentro do sistema... e sim no banco
assim

simplesmente chamo o cn.execute "execute procedure sp_ConsolidarBanco"
e ele fica uns 3 minutos rodando a store procedure... o programa fica parado nessa linha...

posso talvez chamar numa dll, e esperar o retorno... por isso quero se tem como rodar de forma assincrona.... ou simplesmente executar e partir pra fazer outras coisas...

Alguma ideia ?



USUARIO.EXCLUIDOS 05/07/2007 17:45:56
#224915
faz assim:

cn.execute "execute procedure sp_ConsolidarBanco"
DoEvents


USUARIO.EXCLUIDOS 06/07/2007 01:10:26
#224940
Na minha opinião não tem como, porque quando faz a chamada da store procedure o processamento passa para o banco e só depois de terminado é que ele volta para onde foi feito a chamada (no caso o VB).
O que vc pode estar fazendo é otimizar esta stored...se tiver SELECT verificar se tem índice criados para as tabelas, etc.

USUARIO.EXCLUIDOS 06/07/2007 16:44:09
#225086
Pois é,
tentei criar indeces para todos os campos que estão envolvidos na select que tem dentro dessa stored, mas acho que não adiantou muito pois tem campo de data no meio e é isso que deixa o processamento tão lento...

por isso pensei em chamar essa stored sem perder o controle do processamento, só preciso executala, ela não vai retornar nada para mim

Será que alguem tem alguma ideia ?
LCSD 06/07/2007 16:49:14
#225089
Se ela não vai retornar NADA pra VC, PQ VC não SCHEDULA ela no seu SQL SERVER pra rodar de X em X tempo e pronto??

Assim VC não precisa ficar com o sistema PARADO esperando a sua PROCEDURE rodar e não retornar dado nenhum pra VC.
USUARIO.EXCLUIDOS 06/07/2007 16:55:01
#225092
Citação:

PQ VC não SCHEDULA ela no seu SQL SERVER pra rodar de X em X tempo e pronto??



Taí uma boa solução LCSD.
MORDOR 06/07/2007 16:57:37
#225094
O ADO.NET suporta execução assíncrona especificando o parâmetro "async=true" na string de conexão. Nunca testei no ADO com VB6. Você pode tentar usar também MultiThread, no vbaccelerator parece ter uma dll que permite fazer isso.
Tópico encerrado , respostas não são mais permitidas