Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Transactionscope rzucający wyjątek ta platforma nie obsługuje transakcji rozproszonych podczas otwierania obiektu połączenia

Platforma .NET Core nie obsługuje transakcji rozproszonych, ponieważ wymagałoby to innego menedżera transakcji na każdej platformie. Może pojawić się w przyszłości (tutaj problem w toku), ale na razie każda transakcja, która wymagałaby dwóch różnych menedżerów zasobów, zgłosi ten wyjątek.

Zamiast tego możesz koordynować oddzielne transakcje. Niech dwie oddzielne transakcje ukończą swoją pracę, a następnie zatwierdź je obie. Istnieje możliwość że pierwsze zatwierdzenie się powiedzie, a drugie nie, ale w przypadku SQL Server byłoby to bardzo rzadkie zdarzenie. Coś takiego:

            _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;
            }

Lub jeśli dwie bazy danych znajdują się na tym samym serwerze, możesz użyć zapytań między bazami danych z pojedynczym połączeniem SqlConnection, aby zarejestrować zmiany w pojedynczej transakcji SQL Server.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Problemy z replikacją transakcyjną programu SQL Server

  2. Zapisywanie zmian po edycji tabeli w SQL Server Management Studio

  3. Utwórz kopię zapasową bazy danych w SQL Server 2017

  4. Typy danych VARCHAR i NVARCHAR w SQL Server

  5. Przetwarzaj XML do SQL Server