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

Заявката за ROLLBACK TRANSACTION няма съответстваща BEGIN TRANSACTION

Грешката, която получавате, е защото се връщате назад, без да имате отворена транзакция (имате или вече ангажирани или отменени). Помислете за почистване на структурата на вашата съхранена процедура, опитайте се да изпълните цялата си съхранена процедура като една транзакция и след това да се върнете назад, ако възникне грешка. Можете също да тествате дали е необходимо връщане назад, като проверите дали дадена транзакция е отворена:

BEGIN TRANSACTION;
BEGIN TRY

   --execute all your stored proc code here and then commit
   COMMIT;

END TRY
BEGIN CATCH

   --if an exception occurs execute your rollback, also test that you have had some successful transactions
   IF @@TRANCOUNT > 0 ROLLBACK;  

END CATCH


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ограничение за размера на индекса от 900 байта в дължината на знаците

  2. MS Access извикване на SQL Server съхранена процедура

  3. Работа с данни на Salesforce.com в SQL Server Reporting Services

  4. Управление на MDF файлове в SQL Server 2019

  5. SQL OVER() клаузата – кога и защо е полезна?