2012-12-27 1 views
1

J'ai une partie complexe de SQL et il implique beaucoup de calculs etc. Je veux savoir s'il est possible d'annuler la requête qui est émise au serveur SQL?Peut-on annuler une requête émise vers un serveur SQL?

Ex. Il y a un bouton nommé Recherche et l'utilisateur clique sur Recherche. Je veux montrer un bouton nommé "Annuler" et cela devrait annuler la requête émise au serveur SQL.

Est-ce possible?

+1

Comme vous pouvez le faire dans Management Studio, je crois fermement que vous pouvez aussi le faire vous-même. Voir aussi [Opérations asynchrones] (http://msdn.microsoft.com/en-us/library/zw97wx20.aspx) dans MSDN. –

+0

Utilisez une transaction et une restauration? Voir ici: http://stackoverflow.com/questions/3935900/how-to-commit-and-rollback-transaction-in-sql-server –

+0

peut être dupliqué de http://stackoverflow.com/questions/7837739/can -sql-server-requêtes-être-vraiment-annulé-tué – tschmit007

Répondre

8

Il existe un grand nombre de fonctions asynchrones dans ADO.NET, par ex. SqlCommand.BeginExecuteNonQuery.

Vous pouvez appeler ces fonctions dans votre application, stocker l'objet résultat et l'annuler lorsque l'utilisateur clique sur le bouton "Annuler".

Donc, en pseudo-code que vous pouvez faire ces étapes:

  1. utilisateur clique sur le bouton de recherche .
  2. Dans le gestionnaire du bouton, ouvrez votre connexion DB et autres.
  3. Afficher votre Annuler le bouton.
  4. Appelez la fonction ADO.NET async de votre choix.
  5. Stockez l'objet IAsyncResult retourné de l'appel de fonction (pour détecter à quel moment l'opération est terminée, masquer à nouveau le bouton d'annulation).
  6. Dans le gestionnaire du bouton Annuler, appelez le Cancel method de SqlCommand.
+3

Merci !! Cela m'a vraiment donné un indice :) et est mieux que de donner accès aux détails du serveur à mes utilisateurs :) – Jack

Questions connexes