STOP TRANSACAO SQL
Bom dia Pessoas!
é o seguinte, tenho uma aplicação que faz consultas SQL em outros servidores(externos) .
O meu problema é quando rodo um select ou qualquer outra query que vai me retornar, muitos
dados a aplicação demora muito, oque eu gostaria de fazer é um botão que de um STOP nessa transação,
mas ai vem outro problema, pq a aplicação fica travada em quanto não termina de rodar a query.
Dei uma vasculhada no forum mas não encontrei algo do tipo, caso já tenha um tópico com isso me desculpem
pela redundancia.
Alguém já fez algo do tipo, ou tem idéia de como fazer?
é o seguinte, tenho uma aplicação que faz consultas SQL em outros servidores(externos) .
O meu problema é quando rodo um select ou qualquer outra query que vai me retornar, muitos
dados a aplicação demora muito, oque eu gostaria de fazer é um botão que de um STOP nessa transação,
mas ai vem outro problema, pq a aplicação fica travada em quanto não termina de rodar a query.
Dei uma vasculhada no forum mas não encontrei algo do tipo, caso já tenha um tópico com isso me desculpem
pela redundancia.
Alguém já fez algo do tipo, ou tem idéia de como fazer?
Bom dia,
Eu nunca fiz nada do tipo, mas [Ô]acredito[Ô] não tenho certeza.... O seguinte, nesse caso você teria que chamar essa rotina através de thread assim ele não iria congelar a tela sendo assim possÃvel cancelar a ação.
Eu nunca fiz nada do tipo, mas [Ô]acredito[Ô] não tenho certeza.... O seguinte, nesse caso você teria que chamar essa rotina através de thread assim ele não iria congelar a tela sendo assim possÃvel cancelar a ação.
isso aqui resolve o seu problema:
http://www.macoratti.net/12/03/c_oasql.htm
http://www.macoratti.net/12/03/c_oasql.htm
Caro FELIPEDRONI
Isso realmente é um pouco complexo pois para parara ou não continuar seu processo dentro de um banco SQL somente com o comando KILL matando o processo...
Uma forma menos forçada seria cosntruir uma STORED PROCEDURE e identificar alguns processos que possa encerrar de forma a não comprometer seu banco....
Dentro de sua query utilize alguns comando que possa intferromper de forma ordenada e sistêmica sua consulta.............
Estrutura de uma consulta:
BEGIN TRY
BEGIN TRANSACTION
/* executar todas as suas instruções SQL */
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH
Com isso não terá problemas de demora ou pode ser interrompido por timeout..........
Boa Sorte
Isso realmente é um pouco complexo pois para parara ou não continuar seu processo dentro de um banco SQL somente com o comando KILL matando o processo...
Uma forma menos forçada seria cosntruir uma STORED PROCEDURE e identificar alguns processos que possa encerrar de forma a não comprometer seu banco....
Dentro de sua query utilize alguns comando que possa intferromper de forma ordenada e sistêmica sua consulta.............
Estrutura de uma consulta:
BEGIN TRY
BEGIN TRANSACTION
/* executar todas as suas instruções SQL */
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH
Com isso não terá problemas de demora ou pode ser interrompido por timeout..........
Boa Sorte
O objeto SqlCommand possui um método chamado Cancel que é exatamente para isso, cancelar o comando que está sendo executado. Só que é claro que para poder fazer isso você precisa estar rodando a Query em uma outra Thread ou então você não vai conseguir chamar o Cancel
Tópico encerrado , respostas não são mais permitidas