Katholieke Hogeschool Kempen Campus Geel
Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica
Safety Check
Groepsopdracht 2 Beheer van Databanken
Joeri VERLOOY (Groepsverantwoordelijke) Cindy JANSEN (Secretaris) Jenthe MARIËN (lid)
Academiejaar 2011 -2012
3
INHOUDSTAFEL INHOUDSTAFEL .................................................................................................. 3 INLEIDING ......................................................................................................... 4 1
HOOFDSTUK 1 ILLUSTRATIES VAN DRIE GEVALLEN ............................. 5
2
HOOFDSTUK 2 WAAR VIND JE EEN MISLUKTE RESTORE-OPERATIE TERUG? ................................................................................................ 6
3
HOOFDSTUK 3 HOE KAN JE DE SAFETY CHECK OMZEILEN IN T-SQL? ... 8
BESLUIT…. ......................................................................................................... 9 LITERATUURLIJST ............................................................................................ 10
4
INLEIDING Tijdens de lessen ‘Beheren van databanken’ werken wij het databasebeheersysteem SQL Management Studio dat door Microsoft werd ontwikkeld. Tijdens de lessen leren wij hoe we configuraties moeten aanbrengen en instellingen moeten wijzigen. Doorheen de lessen zijn er ook een aantal problemen waar je op kan botsen. In deze bundel zult u een oplossing vinden op één van deze problemen. Namelijk dat een restore-proces niet wordt uitgevoerd in een aantal gevallen omdat SQL server een Safety Check doet. We willen in deze bundel de drie gevallen illustreren waarom een restore-proces niet wordt uitgevoerd en waar je een mislukte restore-operatie kunt terugvinden. Ook zal er uitgelegd worden hoe u de Safety Check kunt omzeilen in T-SQL.
5
1
HOOFDSTUK 1 ILLUSTRATIES VAN DRIE GEVALLEN
Binnen het managementsysteem van SQL Server zit een intern mechanisme, genaamd Safety Check. Deze zorgt ervoor dat een restore-operatie op een goede manier kan starten. De Safety Check zorgt ervoor dat een andere database niet per ongeluk wordt overschreven. Er zijn 3 gevallen waarbij een restore-proces niet zal worden uitgevoerd en dit is als: -
de opgegeven databasenaam in de restore-opdracht al bestaat op de server en de naam niet overeenkomt met de naam in de back-up, M.a.w. u heeft een database genaamd “Boekhouding” en u wilt een restoreproces opstarten van een backup device dat een databaseback-up heeft van een database genaamd “Boekh”.
-
de bestanden op de server verschillend zijn van de bestanden in de back-upset, M.a.w. u heeft in uw database “Boekhouding” bepaalde tabellen verwijderd, bv “BTW”. Uw back-upset bevat nog steeds die tabel “BTW”. Omdat deze tabel nog steeds aanwezig is in de back-upset wordt de restore-opdracht niet uitgevoerd.
-
niet alle bestanden die nodig zijn om een database (of filegroup) te restoren, aanwezig zijn.
Afbeelding 1: Timeline voor back-ups M.a.w. uw back-up procedure is ergens misgelopen en hierdoor is partitie “B” verdwenen. Als u deze back-upset wilt gebruiken om een restore-procedure te starten, dan wordt de restore-opdracht niet uitgevoerd.
6
2
HOOFDSTUK 2 WAAR VIND JE EEN MISLUKTE RESTORE-OPERATIE TERUG?
In het vorige hoofdstuk hebben we beschreven wanneer Safety Check bepaalde restore-operaties niet uitvoert. In dit hoofdstuk leggen we uit waar de informatie i.v.m. deze mislukte restore-opdrachten teruggevonden kan worden. Deze informatie wordt opgeslagen in de logbestanden van Windows Sql Server 2008. Deze vindt je standaard onder volgend pad terug: Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\LOG\ERRORLOG en ERRORLOG.n. Deze bestanden kan u openen in SQL Server Management Studio of met kladblok of een andere teksteditor. Hieronder ziet u een voorbeeldje.
Afbeelding 2: Voorbeeld van map met log-bestanden
7
Afbeelding 3: Voorbeeld van ERRORLOG-bestand
8
3
HOOFDSTUK 3 HOE KAN JE DE SAFETY CHECK OMZEILEN IN T-SQL?
Als uw Safety Check uw restore-procedure doet mislukken, kan u een restore toch nog laten doorvoeren door middel van de optie REPLACE bij het RESTORE-commando te gebruiken. Deze optie REPLACE zorgt ervoor dat je een bestaande database kan overschrijven wanneer u een restore uitvoert. De WITH REPLACE vertelt de SQL server dat het alle actieve inhoud in the transaction log mag weggegooien en verder mag gaan met de restore. Het script zou er bijvoorbeeld zo kunnen uitzien: RESTORE DATABASE AdventureWorks FROM DISK = 'C:\BackupAdventureworks.bak' WITH REPLACE
9
BESLUIT…. Safety Check zorgt er dus voor dat een restore-opdracht niet uitgevoerd zal worden bij volgende situaties: -
de opgegeven databasenaam in de restore-opdracht al bestaat op de server en de naam niet overeenkomt met de naam in de back-up,
-
de bestanden op de server verschillend zijn van de bestanden in de back-upset,
-
niet alle bestanden die nodig zijn om een database (of filegroup) te restoren, aanwezig zijn.
Informatie i.v.m. deze mislukte restore-opdrachten kan u terugvinden in de logbestanden van Microsoft Sql Server. In T-SQL kan u een restore uitvoeren zonder Safety Check door de optie REPLACE bij het RESTORE-commando te gebruiken.
10
LITERATUURLIJST (2011). Beheer van Microsoft SQL Server 2008 R2. Onuitgegeven cursus bij de cursus voor het derde jaar van de opleiding Toegepaste Informatica, Katholieke Hogeschool Kempen, Departement Handelswetenschappen en bedrijfskunde Geel. Laatste versie: 17 november 2011
Microsoft. (2011). RESTORE Arguments (Transact-SQL) Gevonden op 09 december 2011 op het internet: http://technet.microsoft.com/enus/library/ms178615.aspx
Jorden, J.L. (30-okt.-2006). SQL Server 2005 DBA Street Smarts: A Real World Guide to SQL Server 2005 Certification Skills. Gevonden op 09 december 2011 op Google Books (internet).
Afbeelding 1: Msdn. (2011). Full Database Backups Gevonden op 09 december 2011 op het internet: http://msdn.microsoft.com/enus/library/ms186289.aspx