Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Транзакциите трябва да се обработват в .NET или SQL Server?

Няма строго и бързо правило, но виждам няколко причини да контролирате транзакциите от бизнес ниво:

  • Комуникация през границите на хранилището на данни. Транзакциите не трябва да са срещу RDBMS; те могат да бъдат срещу различни обекти.

  • Възможността за връщане назад/задължаване на транзакции въз основа на бизнес логика, която може да не е достъпна за конкретната съхранена процедура, която извиквате.

  • Възможност за извикване на произволен набор от заявки в рамките на една транзакция. Това също елиминира необходимостта да се тревожите за броя на транзакциите.

  • Лични предпочитания:c# има по-елегантна структура за деклариране на транзакции:a using блок. За сравнение, винаги съм намирал транзакциите в съхранените процедури за тромави, когато преминавам към връщане назад/комит.

Това може или не може да е проблем в зависимост от това колко транзакции се отварят (не е ясно дали това е единична работа или процедура, която се изпълнява с висока едновременност). Бих предложил да погледнете какви ключалки се поставят върху обекти и колко дълго се държат тези ключалки.

Имайте предвид, че валидирането вероятно трябва ключалка; какво ще стане, ако данните се променят между момента, в който сте ги потвърдили, и момента, в който се случи действието?

Ако се проблем, можете да разделите нарушаващата процедура на две процедури и да извикате една извън TransactionScope .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо съхранената процедура е по-бърза от Query

  2. MSSQL в python 2.7

  3. sql сървър 2008 xml файл към таблица

  4. Как да вмъкнете запис и да върнете новосъздадения идентификатор с помощта на една SqlCommand?

  5. .NET:Как да вмъкна XML документ в SQL Server