Avatar billede pdj Novice
11. juli 2009 - 13:57 Der er 4 kommentarer og
1 løsning

SQL2005: Tilføjelse af ny transaktionslog mens der kører en transaktion?

Jeg har haft en stor transaktion kørende i over 6 timer, og forventer den skal køre 5-6 timer mere. Nu begynder jeg dog at tvivle på om drevet med transaktionsloggen er stor nok, så jeg vil gerne tilføje endnu en transaktionslog på et andet drev.

Kan jeg risikofrit gøre det mens min store transaktion kører, og vil SQL serveren benytte den nye log til den allerede kørende transaktion?

(Basen står i Simple recovery mode, og har i forvejen 2 transaktionslog filer)

Behøver jeg sige at svaret haster lidt? ;-)
Avatar billede arne_v Ekspert
11. juli 2009 - 14:24 #1
Du kan godt tilfoeje en ny transaktion log.

Jeg har aldrig proevet det under de omstaendigheder, men jeg vil tro (ikke det samme som at jeg ved) at den vil kunne bruge den nye fil til din transaktion.
Avatar billede pdj Novice
11. juli 2009 - 15:56 #2
Tak. Nu har jeg gjort det uden problemer. Spørgsmålet er så blot om den eksisterende transaktion vil bruge den, og selvfølgelig om det overhovedet bliver nødvendigt.
Det afhænger nok af om oprettelse af almindelige Index og Index'ed Views bliver logget detaljeret i Simple mode.
Avatar billede pdj Novice
11. juli 2009 - 20:40 #3
Så blev min transaktion færdig, og det faktisk præcis uden at få brug for den ekstra transaktions log. Så konklusionen må være at man nemt kan tilføje ekstra transaktions log filer, men der er stadig ikke afprøvet om igangværende transaktioner reelt også tager den i brug. Jeg var nok heldig at jeg ikke havde sat den i SingleUser mode inden, da jeg ellers næppe kunne tilføje en ekstra log.

Så er det videre med alle de andre ting der skal være klar inden brugerne kommer tilbage mandag morgen...

Tak for hjælpen - lav et svar inden 24 timer for at få point :-)
Avatar billede arne_v Ekspert
13. juli 2009 - 14:38 #4
svar
Avatar billede Lars_sm Nybegynder
17. juli 2009 - 12:54 #5
Lige en kommentar til dette:

Hvis du har en stor transaktion kørende, vil det nemmeste være at tage en backup af transaktionsloggen, hvorefter du shrinker loggen. Det kan være nødvendigt at tage backup en 2-3 gange før du kan shrinke.

Først backup:
BACKUP LOG [dindb] TO DISK='C:\eksempel\dindb_log.bak'

Derefter shrink:
-- finde fileid (noter hvilken fileid loggen har - typisk 2)
USE [dindb]
SELECT * FROM sysfiles

-- shrinke (her forsøges at shrinke fileid 2 til 1 mb - eller laveste)
USE [dindb]
DBCC SHRINKFILE(2,1)
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