


Comptes BEGIN-COMMIT incompatibles : erreur de nombre de transactions
Dans un scénario où une procédure stockée appelle une autre procédure stockée dans une instruction EXECUTE, un une erreur peut se produire si le nombre de transactions ne correspond pas. Le message d'erreur suivant illustre ce problème :
Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 1, current count = 0
Root Cause
Cette erreur se produit généralement lorsque la procédure stockée de l'appelant démarre une transaction (avec BEGIN) et que l'appelé la procédure stockée ne gère pas correctement la transaction exceptions.
Enquête
Après examen du code, il a été découvert que la procédure stockée de l'appelé ne vérifiait pas les interruptions de transaction ou les transactions non validées dans son bloc TRY/CATCH. . Lorsqu'une exception se produit, la transaction doit être correctement gérée.
Solution
Pour résoudre ce problème, la procédure stockée de l'appelé doit être modifiée pour inclure une gestion appropriée de l'état de la transaction . L'exemple suivant illustre l'approche recommandée :
CREATE PROCEDURE [usp_my_procedure_name] AS BEGIN SET NOCOUNT ON; DECLARE @trancount INT; SET @trancount = @@TRANCOUNT; BEGIN TRY IF @trancount = 0 BEGIN TRANSACTION ELSE SAVE TRANSACTION usp_my_procedure_name; -- Do the actual work here label exit: IF @trancount = 0 COMMIT; END TRY BEGIN CATCH DECLARE @error INT, @message VARCHAR(4000), @xstate INT; SELECT @error = ERROR_NUMBER(), @message = ERROR_MESSAGE(), @xstate = XACT_STATE(); IF @xstate = -1 ROLLBACK; IF @xstate = 1 AND @trancount = 0 ROLLBACK IF @xstate = 1 AND @trancount > 0 ROLLBACK TRANSACTION usp_my_procedure_name; RAISERROR ('usp_my_procedure_name: %d: %s', 16, 1, @error, @message); END CATCH END GO
Ressources supplémentaires
- [Gestion des exceptions et ressources imbriquées Transactions](https://docs.microsoft.com/en-us/sql/t-sql/statements/begin-transaction-transact-sql?view=sql-server-ver15#exceptions-and-nested-transactions)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

MySQL'sblobissuitable ForstoringBinaryDatawithInarelationDatabase, WhileLenosqloloptionsLikEmongoDB, redis et Cassandraofferflexible, ScalablesButions forununstructureddata.blobissimplerbutcanslowdownporduit

ToaddauserRinmysql, utilisation: CreateUser'Username '@' host'identifiedBy'password '; ici'showtodoitsecurely: 1) ChoosetheHostCarelyToCon trolaccess.2) setResourcelimits withoptionslikemax_queries_per_hour.3) usestrong, uniquepasswords.4) Enforcessl / tlsconnectionwith

ToavoidcomMonmistakeswithstringDatatyPesInmysql, compréhension de compréhension, chooseTherightType, andManageEncodingAndCollationSettingSeffectively.1) usECHARFORFIXED-LEGLINGSTRING

MySQLoffersEchar, Varchar, Text, andDenumForstringData.USECHARFORFIXED-LEGLINGSTRINGS, VARCHARERFORVARVARIABLE, TEXT FORLARGER Text, andEnUmForForCingDataEgrityWithaetofValues.

L'optimisation des demandes MySqlBlob peut être effectuée via les stratégies suivantes: 1. Réduire la fréquence de la requête BLOB, utiliser les demandes indépendantes ou retarder le chargement; 2. Sélectionnez le type BLOB approprié (tel que TinyBlob); 3. Séparez les données BLOB en tables séparées; 4. Compressez les données BLOB à la couche d'application; 5. Indexez les métadonnées blob. Ces méthodes peuvent efficacement améliorer les performances en combinant la surveillance, la mise en cache et la rupture de données dans les applications réelles.

La maîtrise de la méthode d'ajout d'utilisateurs de MySQL est cruciale pour les administrateurs et les développeurs de la base de données car il garantit le contrôle de sécurité et d'accès de la base de données. 1) Créez un nouvel utilisateur à l'aide de la commande CreateUser, 2) Attribuer des autorisations via la commande Grant, 3) Utilisez FlushPrivileges pour vous assurer que les autorisations prennent effet, 4) Audit régulièrement et nettoyez les comptes d'utilisateurs pour maintenir les performances et la sécurité.

ChooseCharForfixed-LengthData, Varcharforvariable-LengthData, andTextForLargetExtFields.1) ChariseFicientForConsistent-LengthDatalikEcodes.2)

Les meilleures pratiques pour gérer les types de données de chaîne et les index dans MySQL incluent: 1) la sélection du type de chaîne approprié, tel que le char pour la longueur fixe, le varchar pour la longueur variable et le texte pour un grand texte; 2) Soyez prudent dans l'indexation, évitez de sur-indexer et créez des index pour les requêtes communes; 3) Utilisez des index de préfixe et des index de texte complet pour optimiser les recherches de chaînes longues; 4) Surveiller et optimiser régulièrement les index pour maintenir les index petits et efficaces. Grâce à ces méthodes, nous pouvons équilibrer les performances de lecture et d'écriture et d'améliorer l'efficacité de la base de données.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

Dreamweaver CS6
Outils de développement Web visuel

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.
