SQL Server 2005 - kezeli konkurencia táblázatok

szavazat
1

Megvan egy ASP.NET alkalmazás ezt a folyamatot:

  • Indítsuk el a kapcsolatot
  • Kezdje a tranzakció
  • Beszúrása táblázatba „LoadData” sok értéket a SqlBulkCopy osztály egy oszlopot, amely egy adott LoadId.
  • Felhívja a tárolt eljárást, hogy:
    • olvassa el az asztalon „LoadData” az adott LoadId.
    • Minden egyes sor nem sok számítás, amely magában foglalja az olvasást tucat táblázatok és írni az eredményeket egy ideiglenes (#temp) asztal (folyamat utolsó néhány perc).
    • Törli a vonalak „LoadDate” az adott LoadId.
    • Miután minden kész, írja az eredményt az eredmény táblázatban.
  • Transzferrekordot vagy rollback, ha valami nem sikerül.

A problémám az, hogy ha van 2 felhasználók, hogy indítsa el a folyamatot, a másik meg kell várni, hogy az előző befejeződött (mert a betét úgy tűnik, hogy véget kizárólagos zár az asztalon) és a kérelem néha esik timeout (és a a felhasználók nem szívesen várni :)).

Keresem a módját, hogy képes legyen a felhasználók számára, hogy nem mindent párhuzamosan, mivel nincs kölcsönhatás, kivéve az utolsót: írásban az eredmény. Úgy gondolom, hogy mi blokkolja nekem az insert / törli a „LoadData” táblázatban. Megnéztem a többi tranzakció izolációs szint, de úgy tűnik, hogy semmi sem segít.

Mi lenne tökéletes lenne, hogy el tudja távolítani a kizárólagos zár a „LoadData” tábla (lehet kényszeríteni sqlserver hogy csak a zár sorok és nem asztal?), Amikor a Beszúrás befejeződött, de anélkül, hogy véget vet a tranzakciót.

Bármilyen javaslat?

A kérdést 09/12/2008 14:38
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
1

ha biztos vagy benne, hogy nincs probléma cioncurrent műveletek az utolsó rész kivételével, miért nem indul a tranzakció előtt az utolsó nyilatkozatok közül azok, amelyek nem igényelnek szigetelés), és vállalják után azonnal sikerül .. Akkor az összes előre olvasási műveletek nem blokkolja egymást ...

Válaszolt 09/12/2008 15:24
a forrás felhasználó

szavazat
1

Nézz fel SET ÜGYLETI izolációs szint READ COMMITTED pillanatfelvétel könyvek online.

Válaszolt 09/12/2008 15:04
a forrás felhasználó

szavazat
1

Tranzakciók ki kell terjednie a kis- és gyorsan végrehajtó darab SQL / kódot. Nekik van egy hajlam Eltérő módon megvalósítható a különböző platformokon. Ők zár táblázatok és bontsa ki a zárat a módosítások nőnek így zár ki a többi felhasználó lekérdezést vagy frissítésével ugyanabban a sorban / oldal / asztal.

Miért ne felejtsük el a tranzakciót, és kezeli feldolgozási hibák más módon? Az Ön adatok integritását truely van rögzítve az ügylet, vagy tud csinálni nélküle?

Válaszolt 09/12/2008 14:43
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more