Avatar billede Lasse Novice
27. maj 2006 - 00:49 Der er 2 kommentarer og
1 løsning

Hjaelp til transaction eller hvad?

Jeg har en langsommelig process der indsaetter en masse data i en db. Processen tager rimelig lang tid at eksekvere da processen ogsaa indsaetter filer paa en fil server. I tilfaelde af en fejl ved indsaettelse paa fil serveren, eller en fejl ved indsaettelse paa databasen, skal alt sammen rulles tilbage (alt indsat i db skal slettes derfra). Derfor skyder jeg indsaettelsen af i en transaktion.

Problemet er at jeg locker databasen i laaang tid, helt op til adskillige minutter. Mit spg. er da: Er det muligt at lave en transaktion der KUN bruges til at kunne rulle tilbage, dvs. transactionen ikke saetter locks?

Jeg har laest lidt omkring isolation level. Min forstaaelse er at ved at saette dette, saa kan man godt laese data som er locked ved en transaction. Problemet her er at saa skal jeg saette isolation level hundrede eller maaske tusinde vis af steder. Jeg ville hellere specificere det en gang for alle under selve transaktionen. Haaber i forstaar.

Takker paa forhaand
Avatar billede arne_v Ekspert
27. maj 2006 - 01:03 #1
minutter og transaktioner er ikke det mest kompatible på denne jord

og iøvrigt kan du jo ikke rulle fileupload tilbage automatisk (en af ulemperne
ved ikke at have filen i databasen)

jeg ville føle det fristende med:

BEGIN
INSERT INTO inprogress VALUES(@filename,GETDATE())
COMMIT
if fejl exit

upload file
if fejl exit

BEGIN
DELETE FROM inprogress WHERE filename = @filename
INSERT INTO filelist VALUES (@filename,....)
COMMIT
if fejl exit

den transaktion tager meget kort tid

og du kan nemt lave en SELECT på inprogress tabellen hvor du kan hvilke
filer der mangler en entry i filelist og derfor kan slettes
Avatar billede arne_v Ekspert
09. juli 2006 - 04:17 #2
OK ?
Avatar billede Lasse Novice
15. marts 2008 - 18:21 #3
arne_v>> God ide
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester