sql >> Database >  >> RDS >> Sqlserver

Uitzondering voor het gooien van transacties op dit platform ondersteunt geen gedistribueerde transacties tijdens het openen van het verbindingsobject

.NET Core ondersteunt geen gedistribueerde transacties omdat hiervoor op elk platform een ​​andere transactiebeheerder nodig is. Het kan in de toekomst verschijnen (hier is het huidige probleem), maar voorlopig zal elke transactie waarvoor twee verschillende resourcemanagers nodig zijn, deze uitzondering veroorzaken.

In plaats daarvan kunt u afzonderlijke transacties coördineren. Laat twee afzonderlijke transacties hun werk voltooien en leg ze vervolgens allebei vast. Er is een mogelijkheid dat de eerste commit slaagt en de tweede mislukt, maar voor SQL Server zou dat een zeer zeldzame gebeurtenis zijn. Iets als:

            _db1UOW.Begin(); //creating sql transaction
            await _db1UOW.IDenialDetailsRepositorydb1.InsertDenialDetails(denialsDetails);
            await _db1UOW.IRuleDetailsRepositorydb1.InsertRulesDetails(rulesDetails);

            _db2UOW.Begin(); //creating sql transaction 
            await _db2UOW.IRuleDetailsRepository.GetRulesDetails();
            await _db2UOW.IDenialDetailsRepository.InsertDenialDetails(denialsDetails);
            var data = await _db2UOW.IRuleDetailsRepository.InsertRulesDetails(rulesDetails);

            _db1UOW.Commit(); //commitng sql transaction
            try
            {
               _db2UOW.Commit(); //commitng sql transaction
            }
            catch (Exception ex)
            {
               LogError("Second transaction failed to commit after first one committed.  Administrators may need to fix stuff");
               throw;
            }

Of als de twee databases zich op dezelfde server bevinden, kunt u query's tussen databases gebruiken met een enkele SqlConnection om de wijzigingen door te voeren in een enkele SQL Server-transactie.




  1. Vertraagde duurzaamheid in SQL Server 2014

  2. Virtuele kolommen en functionele indexen

  3. Een MySQL-queryresultaat opslaan in een .CSV-bestand

  4. ORA-00604 ORA-12705