Table of Contents
Restaurez votre ordinateur pour des performances optimales en quelques minutes !
Au cours des dernières années, certains de nos lecteurs ont suggéré une erreur de revigoration SQL transactionnelle.battre en retraite. malgré le fait que la majorité des Tx. La restauration a échoué, notre offre n’est plus applicable et n’est désormais plus fiable pour certaines bases de données.
Comment puis-je revenir en arrière ? une transaction SQL spécifique ?
Vous devez, bien sûr, réécrire une instruction ROLLBACK TRANSACTION suivie du nom de la transaction que vous souhaitez annuler. Essayez maintenant d’exécuter une transaction AddBook spécifique comme moyen d’insérer un enregistrement de suivi nommé Book15 (assurez-vous qu’il n’y a pas de guide portant ce nom déjà dans la table Books).
Récemment, j’ai souligné un très problème où les données sont insérées sur la base d’un tableau lors de transactions qui offrent de ne pas annuler complètement les paiements financiers si nous utilisons des instructions d’insertion lors de l’utilisation une transaction beaucoup.
Laissez-moi vous présenter une nouvelle démonstration de spécifiquement pour faire face à des situations qui apprécient cela.
Essayons maintenant d’insérer de manière aléatoire de la bande passante dans ce tableau lors d’une transaction importante.
Restaurez votre ordinateur pour des performances optimales en quelques minutes !
Votre PC est-il lent et affiche-t-il constamment des erreurs ? Avez-vous envisagé un reformatage, mais vous n'avez ni le temps ni la patience ? N'ayez crainte, cher ami ! La réponse à tous vos problèmes informatiques est ici : ASR Pro. Ce logiciel incroyable réparera les erreurs informatiques courantes, vous protégera contre la perte de fichiers, les logiciels malveillants, les pannes matérielles et optimisera votre PC pour des performances maximales. Tant que ce programme est installé sur votre machine, vous pouvez dire adieu à ces problèmes techniques frustrants et coûteux !

Comme nous pouvons le voir, la colonne ID d’idée contient le primaire , de sorte que l’ID ne peut comporter que des valeurs uniques. Mais ici, nous essayons d’ajouter un double avantage à l’ID dans grin associé à notre troisième instruction INSERT et à travers laquelle devrait également échouer. Troisième
L’éducation et l’apprentissage ont renvoyé une erreur et nous n’insérerons pas de clé en double dans la colonne ID. Mais qu’en est-il quelque part autour de deux déclarations Raw? Aurez-vous l’air collé ou sauvé ?
Ce qui cause un échange revenir en arrière ?
Ainsi, si l’utilisateur commence à modifier les bandes passantes, la bande détecte uniquement que le mauvais niveau d’enregistrement est définitivement mis à jour et annule une capture pour annuler toutes les fluctuations, une annulation se produit. La récupération peut en outre être effectuée automatiquement après une panne de liste ou de serveur.
Nous pouvons voir le fait que les enregistrements ont été insérés même si la transaction a échoué ; cela pourrait plutôt être la bonne voie. Pour éviter cette situation, nous devons atteindre le financier de manière atomique, ce qui signifie que soit toutes les instructions binaires de l’ensemble de la transaction ont été exécutées, soit aucune d’entre elles n’est exécutée avec succès si l’un d’entre eux dirait que les avantages ne sont pas atteints.
Ici, j’énonce quatre méthodes pour atteindre l’atomicité dans les termes des transactions.
- Utilisez blAbort
- Essayez/Attrapez Utilisez XACT_ABORT
Nous allons réécrire la requête en utilisant simplement le bloc try/catch. Je supprime d’abord à peu près toutes les pistes de la table.
Après avoir exécuté la requête, nous voyons que jamais une seule ligne n’a été insérée directement dans sa table car elle est retournée résidentielle après avoir rencontré une erreur, nous avons peut-être atteint l’atomicité avec un bloc try/catch.
Nous obtenons également une véritable atomicité en définissant la procédure To ON xact_abort. En définissant XACT_ABORT ON, nous pouvons parfois abandonner toutes les transactions d’une proposition lorsqu’une erreur fatale se produit.
Une partie de la transaction sera également combinée car il y avait l’erreur réelle dans la troisième instruction. Donc, mes amis préférés, notre entreprise peut utiliser plusieurs de ces deux méthodes pour inverser complètement la transaction, sans parler de l’atomicité.
- Créer une table Test_tran
- (
- Identifiant de réponse primaire Int,
- COMMENCER LA TRANSACTION
- )
- classe d’aspect professionnel = “”> instate test_tran inside (id, name) (1, ‘amit’)
- instate test_tran at (id, name) (2, ‘kapil ‘)
- INSERT Test_Tran directement dans (ID, Name) VALUES (1, ‘Aditya’)
- COMMIT TRAN
- CHOISIR DE test_tran
- TRUNCATE TABLE Test_tran
- START TRY
- START TRAN
- INSERT Test_Tran dans (ID, Nom) VALUES (1,’Amit’)
- INSERT Test_Tran about (ID, Name) VALUES (2,
- INSERT Test_Tran into (ID, nom) VALUES (1, ‘Aditya’)
- COMMIT TRAN
- END TRY
- BEGIN CATCH
- ROLLBACK TRAN
- END CATCH
- SET XACT_ABORT ON
- START TRAN
- INSERT Test_Tran to (ID, Name) VALUES (1,’Amit’)
- INSERT Test_Tran vers (ID, Name) VALUES (2,’Kapil’ )
- INSERT Test_Tran into (ID, Name) VALUES (1,’Aditya’)
- RÉSERVER UN TRANSFERT
Dans mon premier article, nous pouvons voir comment le marché fonctionne le long avec des correctifs renvoie les messages vocaux d’erreur de procédure stockée. Nous devons maintenant regarder en visitant comment mettre en œuvre des transactions avec gestion des exemptions. Dans tout scénario de récupération, de nombreuses personnes doivent corriger une erreur métier même lors de l’exécution de SQL. Avec l’aide créée par TRY-CATCH, nous pouvons attraper l’exemption qui s’est produite dans les moyens stockés à partir de l’instruction, et avec une aide particulière de et bloquer dans CATCH, nous pouvons annuler la commande. Ci-dessous un exemple. Dans cet exemple réussi, nous pourrions vouloir ROLLBACK mettre la TRANSACTION dans un bloc CATCH après les détails de l’erreur obtenus de Der.
Remarque
Utiliser WideWorldImportersMARCHE/** Créer une procédure stockée **/CRÉER UNE PROCÉDURE [email protected] NVARCHAR(MAX) SORTIEAIMERCOMMENCERCOMMENCEZ UNE AFFAIRE ;COMMENCEZ À ESSAYERSUPPRIMER l'ensemble des ventes de.Customers WHERE CustomerID implique 1ESSAYEZ DE QUITTERPour commencerSET @Error équivaut à 'Numéro d'erreur : ' + CAST(ERROR_NUMBER() AS VARCHAR(10)) + ' ; lol + Car(10) +'Gravité de l'erreur : ' + CAST(ERROR_SEVERITY() AS VARCHAR(10)) + ' ; a + car(10) +'Etat d'erreur : ' + CAST(ERROR_STATE() AS VARCHAR(10)) + '; + ha Char(10) +'Ligne d'erreur : ' + CAST(ERROR_LINE() AS VARCHAR(10)) + ' ; moi + personnage(10) +'Message d'erreur : ' ERROR_MESSAGE()SI + @@TRANCOUNT > 0ROLLBACK DE L'AFFAIRE ;FIN DE CAPTURESI @@TRANCOUNT > 0START Exécuter un TRADE ;FINIRMARCHE/** technique stockée **/DÉCLARATION @ErrorMsg NVARCHAR(MAX)EXEC mtb_SampleExceptionHndling @Error signifie Sortie @ErrorMsgSélectionnez @ErrorMsgMARCHE/** Résultats **/-----------(0 lignes concernées)-----------Numéro d'erreur : 547 ;gravité de l'erreur : 16 ;Erreur locale : 0 ;chaîne d'erreur : 10 ;Message d'erreur : le rapport DELETE est en conflit avec la contrainte REFERENCE"FK_Sales_CustomerTransactions_CustomerID_Sales_Customers".L'écart où il s'est produit dans "WideWorld(1 bande TRY-CATCH concernée)
Référence
- À propos et mise en œuvre des transactions dans les méthodes détenues dans Microsoft Docs.
Contenu associé aux articles
Outils liés aux articles
Dans ma vue précédente, nous avons vu comment recevoir en plus des messages d’erreur de retour des procédures chirurgicales stockées. Voyons maintenant, voyons des informations sur la façon dont les transactions de gestion des exceptions en aval sont peut-être implémentées. Dans toutes les circonstances transactionnelles, je dois vraiment annuler les erreurs de trading lors de la mise en œuvre de SQL. Avec TRY-CATCH, nous pouvons obtenir l’exception levée dans l’instruction de procédure compilée, et avec la production dans CATCH, nous pouvons annuler la transaction. Ci-dessous est un exemple au point. Dans ce bloc CATCH idéal, adapté après l’enregistrement de l’erreur, nous pouvons indiquer quels détails, ROLLBACK TRANSACTION.
Exemple
Est-ce que la restauration des transactions SQL est associée à une erreur ?
En outre, la transaction est annulée à nouveau lorsqu’une erreur se produit dans une nouvelle troisième instruction. Alors, fans, pouvons-nous utiliser ces deux indices à 100% pour annuler la transaction et produire de l’atomicité.
