14. december 2004 - 13:57Der er
4 kommentarer og 2 løsninger
Deaktiver transaktionslog midlertidigt
Hey.
Jeg har en database server, med 2 databaser. Archive og Production
I Archive kører jeg et kald: INSERT INTO Logs(felt1, felt2, felt3) SELECT felt1, felt2, felt3 FROM Production.dbo.Logs
Der er 32.000.000 rækker i Production.Logs, og når jeg kører statementet, vokser min Transactionlog for Archive til 34 GB, og så er der ikke mere harddiskplads, hvorfor kaldet self. laver rollback, og jeg har spildt tre timer :(
Du kan evt kigge paa bulk insert/bulk copy, men hvis det kun er til archive er der vel ikke grund til at have en transactionlog da du kun indsaetter data engang imellem. Overvej evt. at saette databasen til "simple recovery".
ved naerlaesning maa jeg give dig ret, den har stadig en translog, men den truncater den bare efter hver transaction. En mulighed er som du siger at tage det i batches, ellers kan du maaske saette recovery til "bulk-logged" og saa bruge bulk copy og insert, da der staar "Minimal log space is used by bulk operations."
Du kunne også bare bruge EnterpriseManagerens import/export og importerer din tabel, den sørger selv for at lave batches osv. :O)
Og så gøre som bjornicle siger, sætte recovery til simple!. Grunden til at du oplever at transactionsloggen også vokser ved simple er såmænd simpelt nok :O)... Den holder transaktionen indtil den er færdig, når den så er færdig frigives pladsen og du behøver således ikke lave en backup af transactionsloggen (hvilket heller ikke kan lade sig gøre når du kører simple recovery)
Jo, lad os bare det. Jeg har ikke fået tid til at afprøve det endnu, men import export burde vel virke...
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.