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

SQL Server:Течове на ниво на изолация в обединените връзки

Пулът на връзките извиква sp_resetconnection преди рециклиране на връзка. Нулирането на нивото на изолация на транзакциите не е в списъка с неща, които sp_resetconnection прави. Това би обяснило защо "сериализуемите" течове в обединените връзки.

Предполагам, че бихте могли да започнете всяка заявка, като се уверите, че е на правилното ниво на изолация:

if not exists (
              select  * 
              from    sys.dm_exec_sessions 
              where   session_id = @@SPID 
                      and transaction_isolation_level = 2
              )
    set transaction isolation level read committed

Друг вариант:връзките с различен низ за връзка не споделят пул за връзки. Така че, ако използвате друг низ за връзка за "сериализуемите" заявки, те няма да споделят пул със заявките "read committed". Лесен начин да промените низа за връзка е да използвате различно име за вход. Можете също да добавите произволна опция като Persist Security Info=False; .

И накрая, можете да се уверите, че всяка "сериализуема" заявка нулира нивото на изолация, преди да се върне. Ако "сериализуема" заявка не успее да завърши, можете да изчистите пула за връзки, за да извадите опетнената връзка от пула:

SqlConnection.ClearPool(yourSqlConnection);

Това е потенциално скъпо, но неуспешните заявки са рядкост, така че не трябва да извикате ClearPool() често.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите списък с колони с уникални ограничения в базата данни на SQL Server - SQL Server / TSQL урок, част 98

  2. Изчисляване на броя на пълните месеци между две дати в SQL

  3. Изгледът по-бърз ли е от обикновена заявка?

  4. Премахнете SCHEMABINDING от изглед в SQL Server

  5. Текстът, ntext и графичните данни> типовете не могат да се сравняват или сортират, освен когато се използва оператор IS NULL или LIKE>