/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Rollback eller er det backup??
Fra : N9


Dato : 02-11-04 14:38

Hej

Hvis jeg i MSSQL kommer til at slette 100 post og fortryder det, kan man så
rollback?? Hvis mulig hvordan?
Kan man evt rollback til en givende dato?????

Takker

Hilsen

N9

 
 
Jesper Sommer (02-11-2004)
Kommentar
Fra : Jesper Sommer


Dato : 02-11-04 15:20

> Hvis jeg i MSSQL kommer til at slette 100 post og fortryder det, kan man så
> rollback?? Hvis mulig hvordan?
> Kan man evt rollback til en givende dato?????

Ja, du kan lave Rollback til en given dato - forudsat at du har din
transaktionslog intakt til formålet.

Men !

Din transaktionslog er en slags "tidsmaskine" som med en Rollback
operation kan tage dig tilbage til den tilstand din database havde på et
bestemt tidspunkt ... i ALLE aspekter. Dvs. også med alle andre
handlinger der er lavet, ud over de 100 poster du har slettet.

Det er ikke helt lige så nemt at pille dine 100 poster ud, udelukkende
ved hjælp af en Rollback, hvis du i mellemtiden også har lavet andre
operationer der ændrer indholdet af din database.

Afhængigt af hvor komplekst det er for dig, og hvilken backup strategi
du har, så er det måske nemmest at indlæse din backup til en midlertidig
database, pille dine 100 poster ud, og læse dem ind i din nuværende
driftsdatabase.



- Jesper

Nomail (03-11-2004)
Kommentar
Fra : Nomail


Dato : 03-11-04 18:04


> Ja, du kan lave Rollback til en given dato - forudsat at du har din
> transaktionslog intakt til formålet.
>
Hvad SP kan udføre det??
Og er det filen "databasenavn_log.ldf"?, tror nok den hedder ldf
Hilsen
Nhi



Jesper Sommer (03-11-2004)
Kommentar
Fra : Jesper Sommer


Dato : 03-11-04 20:50

> Hvad SP kan udføre det??
> Og er det filen "databasenavn_log.ldf"?, tror nok den hedder ldf

Aner det ikke - der er vist ikke en Stored Procedure til det ... det er jo
en opgave man ikke "bare" begiver sig ud i.

Men gernerelt kan man kun bruge en transaktionslog til to ting:

1.) Lave en øjeblikkelig rollback på en transaktion der ikke er gennemført
korrekt
2.) Anvende loggen til at genetablere basen som den så ud på et præcist
tidspunkt. Dette anvendes ofte hvis serveren har haft en alvorlig fejl eller
lign.

Bemærk: hvis man anvender distribuerede/replikerede databaser må man IKKE
gøre dette uden ekspert hjælp !!!

Eksemplet her er hapset fra internettet:

-- Restore the database from a previous full dump and
leave it ready to accept the log restore(s).
RESTORE DATABASE PUBS FROM DISK = N'C:\BACKUPS\
FULLDUMP.DMP' WITH NORECOVERY

-- Now you roll the log forward to the appropriate
point in time and make the database available for use.
-- Note that STOPAT is disallowed during intervals
in which the database is undergoing operations that
are bulk-logged.
RESTORE LOG PUBS FROM DISK=N'C:\BACKUPS\LOGDUMP.DMP' WITH RECOVERY,
STOPAT='02/11/2002 17:35:00


Der ud over fandt jeg et andet eksempel der ikke er baseret på et bestemt
tidspunkt, men i stedet på en bestemt transaktion som man har
identificeret:


-- Mark to Restore a Log to a Predefined Point in Time
-- Put a mark into the transaction log.
-- Note that the marked transaction must commit
at least one update to mark the log.
BEGIN TRAN MYMARK WITH MARK
UPDATE PUBS.dbo.LastLogMark set MarkTime = GETDATE()
COMMIT TRAN MYMARK

-- Back up the transaction log as you usually do.
BACKUP LOG PUBS TO DISK='C:\BACKUPS\FULLDUMP.DMP' WITH INIT

-- Now you can restore the database up to the log mark.
-- First restore the database and leave it ready to
accept the log restore(s).

RESTORE DATABASE PUBS FROM DISK=N'C:\BACKUPS\FULLDUMP.DMP' WITH
NORECOVERY

-- Now restore the log up to and including the mark and
make it available for use.
-- Note that STOPATMARK is disallowed during intervals
in which the database is undergoing operations
that are bulk-logged.
RESTORE LOG PUBS FROM DISK=N'C:\BACKUPS\ LOGDUMP.DMP' WITH RECOVERY,
STOPATMARK='MYMARK'


Tak til websitet "WindowsITPro" for at sørge for, at jeg ikke selv behøvede
at slå op i dokumentationen ...



- Jesper



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste