vi har en liten bit av backup historia här.

vi har lite backup historia här.

SQL Server spårar historiken för varje säkerhetskopia. Den lagrar dessa data i msdb-databasen. Det är en systemdatabas, och som standard lagras våra systemdatabaser på C-enheten om inte annat anges under installationen.

detta utgör fara på några olika sätt:

C-enheten kan fylla, vilket gör att msdb-skrivningar misslyckas. Systemenheten fylls oftare än du kanske tror – orsakad av slarviga användare som laddar ner stora filer till skrivbordet (finns på systemenheten) eller av Windows-uppdateringar som hämtar många filer till en tillfällig mapp på systemenheten.

MSDB kan växa för att fylla C-enheten, vilket gör att Windows misslyckas. I de fall där vi gör mycket frekventa transaktionsloggbackups av ett stort antal databaser, och vi aldrig rensar MSDB, kan denna databas växa till att vara tillräckligt stor för att hota små C-enheter. När C-enheten fylls misslyckas Windows hårt.

systemenheten är ofta långsam. I gamla versioner av SQL Server indexerades inte systemdatabaserna bra. Kombinera detta med långsamma lokala enheter, och vi har ett recept för långsam msdb-åtkomst. I ett fall, under vår nattliga backup windows, 2/3 av tiden spenderades bara uppdatera MSDB!

övervakningsverktyg kan fråga msdb ineffektivt. Vi har sett fall där tredjeparts serverövervakningsverktyg ständigt kontrollerade MSDB för att se till att alla databaser säkerhetskopierades, men deras frågor använde inte Index. Dessa frågor kan vara det långsammaste på servern.

den här delen av vårt SQL Server sp_Blitz-skript kontrollerar om det finns msdb-backuphistorik äldre än 60 dagar. Detta i sig är inte ett problem – du kanske vill hålla långa perioder av backup historia där bara för att göra prestanda genomströmning rapportering – men överväga att flytta dessa data till Excel eller din favorit rapporteringsverktyg snarare än att slå MSDB varje gång.

återgå till sp_Blitz eller Fråga oss frågor

hur man rensar upp överbelastad msdb Backup historia

överväg att rensa din msdb backup historia av data äldre än 60 dagar. Du kan göra detta på ett par olika sätt:

  • du kan skapa en underhållsplan som kör Historikrensningsuppgiften regelbundet.
  • du kan skapa ett enkelt SQL Server Agent-jobb som kör sp_delete_backuphistory regelbundet (Du kan också få det att köra sp_purge_jobhistory om du vill matcha underhållsplanens funktionalitet).

expandera till Underhållsplannoden i SSMS, högerklicka och välj ”Ny underhållsplan…”

2015-04-10_14-20-46

Välj Underhållsrensningsuppgift från verktygslådans fönster (Observera att ibland blir det här fönstret gömt till vänster under Object Explorer i SSMS:

2015-04-10_14-21-26

för att avsluta, dubbelklicka på uppgiften, välj vilken typ av sanering du vill göra och hur mycket data du vill behålla. Jag kommer ibland att skapa två uppgifter, eftersom jag bryr mig mindre Om Agent jobbhistorik och underhållsplan historia än jag gör om säkerhetskopior, och jag vill oftast min backup historia för att matcha min datalagring politik.

2015-04-10_14-22-03

hur som helst, om din server har en stor mängd historia, kommer det här steget att ta en lång tid att köra första gången. Som Brent noterade i msdb flaskhalsartikeln kan du behöva tillgripa extrema åtgärder som att ändra systemdatabasens utländska nycklar bara för att få raderingarna att hända.

Lämna ett svar

Din e-postadress kommer inte publiceras.