I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Kan det virkeligt være rigtigt? Det er fordi jeg skal lave noget transaktionsstyring på et højere niveau sådan så selve transaktionen til databasen egentlig bare er en af de ting der skal udføres i den samlede transaktion. I givet fald vil det kræve at jeg selv gemmer ændringerne og laver nogle rollbackrutiner - hvilket efter min mening godt kan være besværligt at gøre robust.
Du har en fin transaktonsstyring i MSSQL, men hvis din application skal lave det over flere trin, så vil du sikkert være nødt til at committe flere gange, og så er løbet kørt.
Ok, så er der ikke andet for end at kode sig ud af et rollback. Virker egentlig underligt at funktionaliteten til rollback er der men man lukker helt for muligheden efter commit. Havde ellers været nyttigt til mange ting...
Det er jo lidt fidusen med Commit. Idet du committer tillader du at den tilhørende log bliver slettet. Hvornår skulle den ellers få lov til det? Vi ville bare få endnu flere problemer med vildtvoksende logfiler.
Jeg har netop siddet og kæmpet med 6 GB log der blev til 30 MB. På en harddisk der næsten var fuld.
Ingen point, du fik jo ikke rigtig noget ...
Endelig kan det jo sagtens være at der er andre eksperter der kender nogle workarounds som du kunne bruge, jeg er ikke .NET-mand, men kender den del til MSSQL. Så lad det da stå åbent et par dage, og rejs det evt i MSSQL-kategorien.
- loggen bliver ikke frigjordt ved commit, loggen bliver frigjordt ved enten backup eller checkpoint afhængig af recovery mode
- er det 2 phase commit du fisker efter ? du har f.eks. en SQLServer database og en Oracle database og du skal have en transaktion som retter i begge ? så kan du bruge 2 phase commit og en transaction manager (er indbygget i windows)
2PC er ikke nødvendigvis en løsning på problemet - det afhænger af konteksten
hvis konteksten er: sqlserver begin tx sqlserver execute stmt 1 sqlserver execute stmt 2 sqlserver commit tx snak med "noget andet" som ikke er SQLServer hvis det fejler så fortryd commit og lav rollback af SQLserver tx
og det der "noget andet" er XA compliant så kan man bruge 2PC
hvor det klassiske tx eksempel er at du skal flytte 100 kr. fra en bank konto til en anden bank konto
så må det klassiske 2PC eksempel være at du skal flytte 100 kr. fra en bankkonto i database XXX (f.eks. SQLServer) til en anden bankkonto i database YYY (f.eks. Oracle)
du må kunne finde masser af stof om 2 phase commit, transaction managers, XA compliant databaser og den slags på nettet
Synes godt om
Ny brugerNybegynder
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.