17
LAB ADM 2 Ver 2012-09-30 © Tommy Löfqvist 2000-2012 1 Administration av SQL Server Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på de frågor som inte är överstrukna i en textfil. OBS! Svara med fullständig mening så man förstår vad du svarar på. Enbart svar av typen ja och nej accepteras inte. Du kommer att få redovisa ett slumpmässigt urval av dessa via en applikation på hemsidan som kommer att bli tillgänglig efter laborationen. Till laborationen hör ett antal filer som finns på hemsidan i ADM2_alla.zip och i mapp på skrivbordet på VMware-datorn. Om inget annat sägs ansluter du med Windows autentisering så att du har sysadmin rättigheter.

Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 1

Administration av SQL Server Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på de frågor som inte är överstrukna i en textfil. OBS! Svara med fullständig mening så man förstår vad du svarar på. Enbart svar av typen ja och nej accepteras inte. Du kommer att få redovisa ett slumpmässigt urval av dessa via en applikation på hemsidan som kommer att bli tillgänglig efter laborationen. Till laborationen hör ett antal filer som finns på hemsidan i ADM2_alla.zip och i mapp på skrivbordet på VMware-datorn. Om inget annat sägs ansluter du med Windows autentisering så att du har sysadmin rättigheter.

Page 2: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 2

14.1 Hantera konflikter mellan processer Mål

x Använda Activity Monitor från SQL Enterprise Manager för att titta på SQL Server aktiviteter

x Stoppa en blockerande process x Experimentera med att sätta en lock timeout.

Översikt Syftet med denna övning är att introducera dig till några av de verktyg som du kan använda för att analysera och hantera problem som uppstår när flera användare vill komma åt samma data. 14.1.01 Öppna Management Studio! Logga in med Windows Authentication. Välj databasen

Northwind på verktygsraden.

14.1.02 Skriv i följande transaktion: BEGIN TRAN UPDATE Products SET UnitPrice = UnitPrice*1.05 WHERE CategoryID = 2;

Kör transaktionen! Gör inte Commit eller Rollback!

En transaktion låser de poster som ska uppdateras så att ingen annan användare kan läsa, uppdatera eller radera dessa förrän transaktionen är klar. Transaktionen är klar då den avslutats med Commit Tran eller om den "rullas tillbaka" med Rollback Tran vid ett fel.

14.1.03 Öppna ett nytt fönster i Mstudio med New Query på verktygsraden (du slipper då logga in på nytt), välj Northwind som databas och skriv in och kör följande fråga:

SELECT * FROM Products

Som du ser händer inget med denna frågan. Du kan se på den röda knappen att den fortfarande är aktiv. För att undersöka vad som står på är Activity Monitor ett bra verktyg.

14.1.04 Starta Activity Monitor genom att högerklicka på din server och välj Activity Monitor från Menyn. Under diagrammen finns fyra fönster som kan öppnas. Välj Processes. Du bör då se i grafen Waiting Tasks att det är process(er) som ligger och väntar.

14.1.05 Du bör se en process där "Task State" = suspended (=hängande). Långt till höger i listan hittar du rubriken Blocked by. Notera Session ID för dessa processer.

Blocking Process: ______ Blocked Process: ______ 14.1.06 Antag att det inte har varit någon aktivitet från blocking process de senaste

timmarna, och du har beslutat att avsluta den. Markera denna och högerklicka - välj Details. Notera att du kan se den SQL som den blockerande processen kört. Du har också möjlighet att döda (kill) processen. Välj Kill Process !

14.1.07 Vad har nu hänt med den blockerade frågan från 14.1.03? ______ Det är mycket viktigt att försäkra sig om att processen är inaktiv. Man kan inte springa runt och döda processer bara för att de väntar på resurser.

Page 3: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 3

14.1.10 Återvänd till Mstudio och fönstret som innehåller den blockerande processen. Om processen fortfarande är i gång kör du Rollback Tran. Kör sedan frågan igen utan Commit eller Rollback.

14.1.11 Öppna det andra fönstret där du hade den blockerade SELECT frågan (eller

skapa ett nytt). Kör följande kommando för att sätta låstiden till 3 sekunder: SET LOCK_TIMEOUT 3000

Kör därefter SELECT * FROM Products i samma fönster. Vilken inverkan har SET LOCK_TIMEOUT?___________________________

14.1.15 Stäng frågefönstret. Om frågan fortfarande går i det första fönstret gör du rollback tran så att den avslutas.

Du har nu löst ett concurrency-problem med två olika strategier. 1. Du prioriterade den blockerade processen och dödade den process som

blockerade. 2. Du prioriterade den blockerande processen genom att sätta väntetiden

till 3 s för den blockerade processen, som därefter gav upp. Sammanfattning 14.1 14.1.50 Vad är det som gör att processen i övningen blockerade den andra

processen? 14.1.51 Hur kan man undvika att en process blir väntande i "evighet" på en annan

process? 14.1.52 På vilka två olika sätt kan man angripa problemet med att process låser en

annan?

14.2 Användning av SQL Profiler Mål I denna övning ska du få testa SQL Server Profiler. Problem Antag att du fått i uppdrag att publicera data på webben som genererats av en Windowsapplikation. Problemet är bara att ingen vet vilken av databaserna och i vilken tabell data ligger lagrat. Du ska nu i denna övning ta reda på detta och vilken sql-fråga som används. Här kommer SQL Server Profiler till hjälp att analysera trafiken till servern. 14.2.00 Testa först om applikationen Nameform.exe som finns bland labbfilerna kan

köras i din Windowsversion om inte så saknas .net framework. Gå då direkt till kap 15. Kontrollera också att du har databaserna DBC, Northwind och Pubs från lab Adm1.

14.2.01 Starta SQL Server Profiler från Management Studios Tools-meny. Finns också i SQL Server Mappen från Startknappen.

Vi ska skapa en "trace" för att fånga SQL-kommandon som skickas till servern. För enkelhets skull använder vi en färdig mall som innehåller de event som vi vill titta på.

Page 4: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 4

14.2.02 Välj FileXNewXTrace. Anslut till den lokala servern med Windows autentisering. (Från Mstudio blir det tvärt om :-)

OBS! Du måste ange SQL Serverns riktiga namn det duger inte med . eller local. Serverns namn = datorns namn. Du kan hitta det igenom att köra titta på egenskaperna i "My Computer"

14.2.03 Skriv in följande i lämpliga dialogboxar: Trace Name: NameForm Trace Template Name: Välj Standard (default) från dropdownlistan.

Du ska inte spara resultet av tracen så det är allt som du behöver skriva in på denna flik.

14.2.04 Byt till Events Selections-fliken. Här kan du se en lista på de event som

fångas i Standard template, Samt de kolumner med information som kommer att visas. Allt detta kan justeras.

Markera ; Show all events och ; Show all columns till höger under listan, så får du se en stor mängd event och många data som kan visas. Markera att visa User Error Message som ligger i "Errors and Warnings"

14.2.05 Om man vill filtrera bort information och aktiviteter från andra användare kan man göra det under Column Filters. Vi gör inte det nu. Tracen är nu klar att startas. Klicka på Run-knappen för att starta den.

14.2.06 Du ska nu köra programmet: NameForm.exe (Finns bland laborationsfilerna -Kräver .net ramverk).

Genom att titta på trafiken till SQL-server ska du ta reda på och utföra följande:

a) Vilken databas körs applikationen mot?

b) Under vilken användare körs applikationen?

c) I vilken tabell sparas namnet?

d) Ange ett ID som kan användas för att spara Nisse Hult i databasen!

Tips! Fyll i ID och Namn i NameForm. Tryck gärna på suddgummit på statusraden i profiler för att rensa fönstret precis innan du trycker på spara i NameForm. Pausa Profiler efter en liten stund! ID valideras av ett constraint som du får undersöka.

Sammanfattning 14.2 14.2.50 Vad kallas det verktyg som kan användas till att spåra vad som händer i databasen? Stäng Profiler och övriga verktyg när du är klar!

Page 5: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 5

15.1 Säkerhetskopiering av databaser och transaktionsloggen

Mål

x Göra backup på systemets och användarens databaser x Göra backup på transaktionsloggarna

Översikt Att ta backup på ett korrekt sätt är en av dba's viktigaste uppgifter. I denna övning, får du öva på att göra backup på olika databaser med olika tekniker. Förered databasen som ska säkerhetskopieras 15.1.1 Kontrollera först om du har kvar databasen DBC från föregående laboration. I

annat fall finns det en backup bland labfilerna på hemsidan. Använd MStudio och gå in på Properties-Options för denna databasen och

kontrollera att Recovery model är: Full. Följande frågor kommer nu att lägga till en ny tabell till DBC databasen. För att simulera användning av databasen fyller vi den med 20 rader i taget. Däremellan tas full-, differentiell- och logg-backup på olika sätt. Lägg till 20 nya poster 15.1.2 Öppna filen AddPersonnel.sql i MStudio. Notera att skriptet påbörjar en

transaktion som skapar en tabell om den inte finns. Därefter adderas poster till denna. Kör skriptet! Resultatfönstret kommer att ha en rad som lyder "Det är n rader i dbo.Temp". Notera antalet rader nedan:

? Antalet rader:__________________

Ta full backup på databasen 15.1.3 Skapa först mappen C:\Backup. Låt sedan Query-fönstret vara öppet och

markera databasen DBC. Högerklicka och välj TasksfBackup… Kontrollera att Backup type: är Full. Ta först bort den gamla sökvägen i

Destination och ändra till: C:\Backup\DBC.bak

Gå till Optionsfliken och välj Overwrite all existing Backupsets, samt markera Verify backup when finished.

Klicka på OK för att starta backupen och därefter för att bekräfta meddelandet att allt gick bra.

Lägg till 20 nya poster 15.1.4 Återvänd till Query-fönstret som innehåller AddPersonnel.sql. Kör detta

skriptet igen. Notera antalet rader i tabellen: ? Antalet rader: ________________

Page 6: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 6

Ta full backup på transaktionsloggen 15.1.5 Öppna backupdialogen på samma sätt som tidigare men se till att Backup

type är Transaction log. Om detta alternativ inte är tillgängligt har du inte lyckats med att sätta Recovery model till full

- Det räcker kanske med att göra en refresh och försöka igen. Annars får du börja om.

Kontrollera också på options-sidan att Append to the existing backup set och att Verify backup when finished är valt.

Kör igång backup'en

Lägg till 20 nya poster 15.1.6 När backupen är klar återvänder du till fliken med AddPersonnel.sql skriptet.

Kör detta igen och notera antalet rader:

? Antalet rader:__________

Backup av loggen med T-SQL 15.1.7 Nu ska vi göra backup på transaktionsloggen med TSQL. Öppna ett nytt

Query fönster och kör följande kommando: BACKUP LOG DBC TO DISK = 'C:\Backup\DBC.bak' Håll fönstret öppet.

Lägg till 20 nya poster 15.1.8 Kör nu AddPersonnel.sql skriptet igen och notera antalet rader:

? Antalet rader: ______

Ja, ja lite tjatigt, men ska vi simulera aktiviteter så blir det så här. Differentiell backup av databasen med T-SQL 15.1.9 Återvänd till frågefönstret med backup-kommandon. Denna gång ska du göra

en differentiell backup. BACKUP DATABASE DBC TO DISK = 'C:\Backup\DBC.bak' WITH DIFFERENTIAL

Lägg till 20 nya poster 15.1.10 Återvänd till MStudiofönstret som innehåller AddPersonnel.sql och kör frågan

igen.

? Antal rader:____________

OBS! De nya raderna har vi ingen backup på!

Page 7: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 7

Kontrollera vad som finns i backup-filen 15.1.11 Vi ska nu bara kolla vad som skapats! ÅTERSTÄLL INTE DATABASEN NU!

Markera DBC databasen, högerklicka och välj TasksfRestorefDatabase… Du bör se de backuper som tagits. (I SQL Server 2012 visas troligen inte loggfilerna). Stäng sedan fönstret med CANCEL.

OBS! Återigen, vi ska INTE återställa just nu. Stäng fönstret med CANCEL

Backup av systemdatabaser Systemdatabaserna förändras normalt inte så ofta så de behöver normalt inte säkerhetskopieras lika ofta som produktionsdatabaser. Master-databasen bör säkerhetskopieras när man lagt till databaser och login. Msdb-databasen när man schemalagt uppgifter eller då man skapat nya jobb eller larm. Säkerhetskopiera master- och msdb databaserna 15.1.12 Master och msdb, är inga transaktionsdatabaser så de har bara SIMPLE

recovery model. Det går då inte att göra backup på transaktionsloggen. Så full backup är det enda som behövs.

Ta först full backup på master-databasen och sedan till msdb-databasen i samma backup-fil: C:\Backup\systemDBs.bak

För att ändra på namnet får du radera Remove på default destination fil och lägga till en ny (Add…) med …- knappen. Byt till Options-fliken och markera Verify backup when finished. Markera också lämpligt val Append/Overwrite av backupset

Stoppa databasservern och krasha DBC-databasen 15.1.13 Stoppa tjänsten MSSQLSERVER. Om du har Vista så måste du troligen

använda SQL Server Configuration Manager annars kan du försöka med att högerklicka på servern i Mstudio och stoppa därifrån. Om du får frågan om att stoppa beroende services så stoppa dem också. Stäng Mstudio!

Leta reda på dbc1.mdf filen (i c;\data) och byt namn på den till _dbc1.mdf (Kan nu betraktas som kraschad eller raderad). Loggen antas vara i säkert förvar på en annan säker disk!

Starta MStudio igen och starta din lokala server igen. Du måste eventuellt använda SQL Server Configuration Manager om det inte går att starta från Registered Servers i MStudio.

Refresha Databases och försök öppna DBC-databasen! Va, gick inte det? Öppna Management - SQL Server Logs och försök hitta felmeddelande som visar vad som är problemet.

Vad står det i felmeddelandet? ____________________________________

Page 8: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 8

Skapa kaos Nu skulle vi egentligen ha kraschat master-databasen för att ställa till det riktigt ordentligt. Då kan man inte ens starta SQL Server. För att återhämta (recover) från en kraschad masterdatabas, måste man enkelt uttryckt via installations CD'n återställa systemdatabaserna till samma status som vid första installationen. Alla användardatabaser blir därmed oåtkomliga, så det gäller att man har gjort backup på master-databasen efter sist skapad databas och sist skapad login. Därefter återställs de backup’ade systemdatabaserna och eventuellt skadade användardatabaser. Nu har vi ju masterdatabasen i bra skick så det vi ska inrikta oss på är att rädda så mycket som möjligt av de inmatade raderna i DBC-databasen (Även de som inte finns backup på). Redovisning 15.1 15.1.50 Vilken Recoverymodell medger fullständig återställning vid crash? 15.1.51 Man kan ta backup på olika delar av databasen. Ange tre olika backuptyper. 15.1.52 När ska man ta backup på databaserna master resp. msdb?. 15.1.53 Vad händer med SQL Server om master-databasen blivit skadad?

15.2 Återhämta (Recover) Databases Mål: Återhämta (Recover) DBC databasen Översikt För att kunna återställa databasen från sådana katastrofer som du precis har råkat ut för krävs en bra backupstrategi. I denna övning kommer du att få lära dig alla de tricks som behövs för att kvickt vara på fötter igen.

Backup på allt som är gjort efter sista backupen (tail-log) 15.2.1 Nu ska vi ta tillbaka det arbete som gjordes efter din sista transaktions-loggs

backup. Märkligt nog ska vi börja med att ta en backup på transaktions-loggen, den sista biten av denna har det ju inte tagits någon backup på. Så vi måste rädda denna innan vi återställer äldre loggar. Öppna Databases mappen i MStudio och välj Tasks`Back Up… på master- databasen. Välj databas DBC och backup typen Transaction log. Ta bort befintlig destination. Klicka därefter på Add-knappen och skriv in filnamnet tail-log.bak i C:\backup och tryck Ok. Starta INTE backupen ännu!

Byt till Options-fliken och markera Back up the tail of the log and leave the database in restoring state. Klicka på Ok för att starta backupen.

Det första alternativet "Truncate the transaction log" raderar logg-information om committade transaktioner som sparats på disken (vid en checkpoint). Detta är normalfallet, men eftersom datafilen är skadad så måste vi behålla all information i loggfilen sedan den förra loggfilsbackupen. Det är därför vi måste hindra trunkeringen.

Page 9: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 9

Återställning (recovering) av databasen DBC. 15.2.2 Nu är vi redo att göra återställningen av DBC.

Stäng först alla fönster som eventuellt är anslutna till DBC! Högerklicka på DBC och välj Tasks`Restore`Database… . MStudio kommer att föreslå att du återställer den fulla backupen, den differentiella backupen och den sista logg-backupen (tail-logl).

Klicka Ok för att återställa (restore) databasen. 15.2.3 Öppna ett frågefönster välj DBC databasen och kör frågan: select count(*) from dbo.Temp

? Hur många rader är det i tabellen nu? ______

? Är detta lika många rader som efter övning 15.1.10? ________ Grattis! Om svaret är ja börjar du bli en riktigt proffsig DBA! Nu kan du radera dbo.Temp tabellen.

Redovisning 15.2 15.2.50 Vad var det första som gjordes innan DBC-databasen skulle återhämtas från

crashen? 15.2.51 a) Var det möjligt att återfå de poster som sparades efter sista backupen?

b) Varför det? 16.1 Skapa Job och Operatörer Mål: Skapa operatörer och schemalägga enkla flerstegsjobb. Översikt SQL Server Agent är en process som kan hantera schemalagda uppgifter och reagera på olika händelser. Agenten gör det möjligt att automatisera många rutinuppgifter. I denna övning ska du skapa operatörer, dvs individer som blir meddelade när vissa händelser inträffar och när schemalagda jobb lyckas eller misslyckas. Du kommer att schemalägga enkla jobb och jobb i flera steg som utför rutinarbeten utan din medverkan. Starta agenten 16.1.1 För att ett schemalagt jobb ska fungera måste SQL Server Agent Service

vara startad. Starta Agenten med hjälp av SQL Server Configuration Manager eller direkt

från MStudio

NYHET! I SQL Server 2012 är det nu möjligt att ta backup på logfilen direkt i Restore-kommandot. På Optionsfliken kan man markera detta.

Page 10: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 10

Skapa operatör

16.1.2 Högerklicka på Operators under SQL Server Agent ikonen och välj New

Operator … Skriv in ditt namn och net-send adress, dvs datorns namn. Din e-postadress och personsökaren (Pager's) e-postadress hoppar vi över. För att den ska fungera måste vi konfigurera SQL Server e-post, vilket vi inte gör i denna labben. Stäng fönstret genom att trycka OK.

Skapa ytterligare en ny operatör. Låt en annan grupp vara operatör. Skriv in en annan grupps datornamn som net-send adress.

Skapa ett single step jobb Du kommer att skapa ett jobb som automatiskt säkerhetskopierar DBC databasen en gång per vecka. 16.1.3 Högerklicka på Jobs och välj New Job... (Ligger under SQL Server Agent) Generalsidan

Kalla jobbet Veckobackup DBC. Låt resten av skärmen vara som den är.

Stepssidan Skapa ett nytt steg med New. Använd Steg1 som stegnamn.

Som typ väljer du något som är lämpligt för att skapa ett T-SQL skript. Databas ska vara DBC Skriv in föjande kommando i Command rutan: BACKUP DATABASE DBC TO DISK= 'C:\Backup\DBC.bak'

Klicka på Parse-knappen för att testa syntaxen. (Parse testar inte om sökvägen är rimlig. Tryck sedan OK för att avsluta steget!

Schedulessidan Skapa en ny schemaläggning med New… knappen.Kalla

schemaläggningen för VeckoBackup som ska vara Recurring. Programmera in att backupen ska ske varje Lördag klockan 02:00:00.

Då lär det inte sitta så många framför datorn). Tryck därefter Ok!

För att NET-send ska fungera måste servicen messenger vara aktiv. Den kan startas genom att högerklicka på MyComputer och välja Manage. Under Services och Applications väljer man Services och där letar man reda på Messenger. Om den är disablad kan man ändra till Manual eller Automatic och sedan starta den. OBS! Om du har Windows XP SP2 eller Windows Vista så finns tyvärr inte Messenger längre så då får du utelämna de instruktioner som gäller detta.

Operatörer är personer som kan ta emot e-mail och avisering via personsökare

Page 11: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 11

Notifications-sidan Markera Net send operator och välj operatören på din dator. Uppmärksamma operatören genom att välja When the job completes

från dropdown listan bredvid operatören och samma för Write to the Windows Application event log.

Klicka Ok för att spara.

Testa jobbet 16.1.4 Du behöver inte vänta till kl 02:00 på Lördag för att se om jobbet fungerar. För

att testa det nu, expanderar du SQL Server Agent i trädstrukturen och klickar på Jobs ikonen. Högerklicka på Veckobackup och välj Start Job. Efter några sekunder bör du få ett meddelande från messenger på skärmen. (E-post hade varit en bättre lösning om det funkat). Öppna gärna Job Activity Monitor som du kan hitta i Jobs-mappen

Kontrollera loggar Du kan hitta alla loggar genom att dubbelklicka på Management - SQL Server Logs – Current. I alla loggarna finns extra information under listan med loggar. 16.1.5 1. Kontrollera SQL-Servers logg current

Försök hitta meddelande om jobbet där. 2. Kontrollera Windows NT – Application Log

I samma bild som ovan finns också Windows NT’s loggar. Titta om du kan hitta information om jobbet där också. Notera att backupen sparades som framgångsrik i eventloggen.

I praktiken är det kanske inte så intressant att spara lyckade händelser i applikationsloggen. Detta skulle snart fylla upp eventloggen med ganska oanvändbar information (Inga nyheter är goda nyheter). Normalt loggas endast alvarliga fel i Windows applikationslogg. 3. Kontrollera SQL Server Agent - Error Logs Även här bör du hitta information om jobbet. 4. Läs Job-historiken

Under SQL Server Agent Jobs hittar du jobben. Högerklicka på Veckobackup och View History så hittar du en logg för just det jobbet.

I praktiken har man mängder av schemalagda jobb på produktionsservrarna (backuper mm). Livet blir då lite enklare om du skickar dem till e-mail/personsökare/net send när det blir något fel. Möjligheten att kolla historiken lite då och då finns ju också för att se till att allt funkar som det ska.

Skapa ett multistep job Vi har tidigare sagt att master och msdb bör säkerhetskopieras på samma gång. Vi ska nu skapa ett jobb som säkerhetskopierar båda databaserna kl 23:00 varje kväll. Om master backupen skulle misslyckas ska ingen backup tas på msdb. 16.1.6 Skapa ett nytt job och kalla jobbet: Backup System Databases

Page 12: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 12

Steg 1 - Backup av Master Byt till Steps-sidan och klicka på New. Kalla steget Backup master. Det ska bli ett T-SQL steg som kan köras i master databasen. Skriv in följande kommando i Command rutan: BACKUP DATABASE master TO DISK=' C:\TMP\MASTER.BAK' (OBS! Medvetet obefintlig mapp för att generera ett fel) Klicka på Parse för att testa syntaxen. Byt till Advanced-sidan och se till att jobbet fortsätter till nästa steg om det lyckas och att det avbryter jobbet och rapporterar fel om det inte lyckades. Klicka Ok för att spara steget. Steg 2 - Backup av MSDB Klicka på New för att lägga till ett steg till. Kalla detta Backup msdb. Det är ett TSQL steg och kan också göras i master-databasen. Skriv in följande i kommando rutan: BACKUP DATABASE msdb TO DISK='C:\BACKUP\msdb.bak'

Detta är sista steget, välj Advanced-sidan och markera lämpliga åtgärder vid success och failure. Tryck Ok! Schemaläggning

Byt till Schedule-fliken och programmera in en ny (Recurring) schemaläggning med namnet Daily 23.00. Jobbet ska köra dagligen kl 23:00. Skicka net send till operatören och markera i Windows Application Event log om jobbet misslyckas. Avsluta därefter jobbet!

16.1.7 Testkör jobbet Klicka på Jobs-ikonen och starta jobbet.

Högerklicka därefter på jobbet och välj View History. Försök identifiera jobbet i listan. Du bör se en (eller två) röd ikon som visar att jobbet misslyckats. Ta med hjälp av informationen reda på varför jobbet misslyckades. Det har med sökvägen att göra. I 16.2 ska vi titta på hur man skickar information om varför jobbet misslyckades till operatören.

Redovisning 16.1 16.1.50 Ge exempel på hur en operatör kan meddelas om något som hänt? 16.1.51 Vad kan det bero på om net-send inte skulle fungera? 16.1.52 Ge exempel på ett job som kan programmeras in! 16.1.53 Hur kan man i efterhand kontrollera hur jobben fungerat? 16.1.54 Vad är det som ser till att starta schemalagda jobb? Vilken service måste vara

igång för att det ska fungera? 16.1.55 Vad var det som gjorde att jobbet i 16.1 misslyckades?

16.2 har utgått.

Page 13: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 13

16.3 Skapa larm (alert) på "prestanda villkor" (Performance Condition) Mål: Att larma på prestandavillkor (performance condition alerts) Saker och ting händer i din SQL Server omgivning som inte är fel som man skulle vilja veta lite om. I detta avsnitt, ska du skapa ett larm (alert) som utlöses när antalet användare som är anslutna till systemet överskrider en viss gräns. Detta är kanske inte så vanligt men det är enkelt att simulera så att du kan se hur processen fungerar. Skapa larm som larmar via net send när antalet anslutna överstiger 5 st. 16.3.01 Markera Alerts ikonen i agentmappen och skapa ett nytt larm (alert). General-sidan

Namnge larmet Too many users Välj SQL Server performance condition alert. från Type listan. Notera att displayen förändras.

Välj SQL Server: General Statistics i Object dropdown-listan. Välj sedan User Connections i dropdownlistan Counter.

Du ska nu fylla i de två sista rutorna så att vi får ett larm då antalet anslutna överstiger 5 stycken.

Response-sidan Meddela din operatör med Net send. Options-sidan

Skriv följande meddelande i textrutan Additional notification… Hej - Det börjar bli jobbigt. Det är för många användare inne. Spara sedan genom att trycka OK.

Testa larmet

16.3.2 Öppna ett antal nya frågefönster (File - New - Database Engine Query) Får du något meddelande?

Disabla larmet 16.3.3 För att slippa lida av denna begränsningen i fortsättningen så går du tillbaka

till larmet och disablar detta. (Det finns en checkbox på första sidan om du väljer properties)

Redovisning 16.3 16.3.50 Ge exempel på tre larm på prestandavillkor (Performance Condition Alert!) (Du får titta i dropdownlistorna där du valde du valde "User Connections")

Page 14: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 14

17 Flytta databaser Om du behöver flytta databaser från en server till en annan, eller om du har mobila användare som bär med sig sina databaser på sina laptops, behöver du känna till olika metoder att göra detta. Olika sätt att flytta / kopiera databaser

För att flytta eller kopiera databaser från en server till en annan finns följande metoder att tillgå. 1. Detach / Attach (koppla från/till) 2. Backup / Restore (Säkerhetskopiera/Återställa) 3. Copy Database Wizard 4. Export data… / Import data… 5. SSIS - SQL Server Integration Services 6. Kopiera skriptad databas Problem Om du delat ut rättigheter till dina users till databasen så finns stor risk att dessa users login inte har samma SID (Security Identification Number) som motsvarande login på måldatabasen. Några sätt att hantera detta

a) Använd proceduren sp_change_users_login som kan hitta och fixa felmappningar b) Sätt rättigheter på roller istället för på users. Det är då lätt att lägga in nya users i

rollerna på måldatabasen. c) Copy Database Wizard fixar om-mappning automatiskt d) Windowslogin har samma SID i hela domänen

17.1 Användning av Detach och Attach

Du ska ansluta en frånkopplad databas till en ny server och se till att användarna matchar de användare som finns på den nya servern Anslut databas till din server 17.1.1 Du har fått en frånkopplad (detached) databas skickad till dig i form av

databasfiler. Du ska nu ansluta den till din server. Den frånkopplade (detached) databasen är Customers_data.mdf och Customers_log.ldf. (Finns bland labfilerna på hemsidan). Kopiera dem till din dator. Lägg dem bland de andra databaserna i:

C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\ och koppla in den (attach) på servern på valfritt sätt. Högerklicka på Databases i MStudio eller sp_attach_db 'fil.mdf', 'fil.ldf'.

Page 15: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 15

Kontrollera och justera users i den nya databasen 17.1.3 Öppna Mstudio och gör refresh på din lista med databaser. Gå in i Customers

databasen och kontrollera vilka users som har tillträde till databasen. User i databasen var: ___________________________________________

Öppna en ny fråga med (File - New - Database Engine Query) och logga in som Sven eller Stina. Dessa användare ska du ha sedan tidigare. Anslut till Customers databasen.

Varför gick inte det? Databasen hade ju dessa användare! _____________________________________________________________ Stäng Sven och Stinas frågefönster. 17.1.4 När du gör attach på en databas på en annan server är det möjligt att

kopplingarna mellan befintliga login och motsvarande användare blir felaktiga. (De har troligen olika SID). Det finns en lagrad procedure som heter sp_change_users_login som kommer att identifiera felaktiga mappningar. Du behöver kolla om detta har hänt när du kopplade in Customers databasen. Välj Customers databasen i MStudio och kör (som sysadmin) kommandot:

sp_change_users_login 'Report'

Vilka felmappade users rapporteras? _______________________________ 17.1.5 Sven och Stina bör rapporteras som felaktiga. Det man då kan göra är att

radera dessa som user i databasen och lägga till målserverns motsvarande användare i stället. Ett enklare men något farligare sätt är att köra

sp_change_users_login 'Auto_Fix','Sven' Gör detta och testa proceduren från ovanstående fråga igen. Sven bör då ha

försvunnit från listan. Kör samma procedur även för Stina.

Vid kopiering inom samma domän behåller Windowslogin sina SID så med dessa användare blir det sällan problem.

17.1.6 Testa nu igen om du kan logga in som Sven eller Stina och att de kan använda den nya databasen. Skriv t ex SELECT * FROM Kund

Redovisning 17.1 17.1.50 Om du vill flytta en databas från en server A till en server B genom att helt

enkelt kopiera databasfilerna. Vad måste du då göra på server A respektive server B?

17.1.51 Vad kan hända om du kopplar in (attach) en databas i en ny server som redan har samma användare registrerade sedan tidigare?

17.1.52 Ange två sätt att fixa felmappade users som man kopierat till sig. 17.1.53 För vilken typ av login får man inget problem med SID när man kopplaar in

(attach) en databas inom samma domän?

Page 16: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 16

17.2 Flytta databaser med Backup och Restore Mål I denna övning ska vi flytta en databas med Backup och Restore. Notera att du inte behöver göra någon avancerad förberedelse t ex skapa databas innan du gör restore. Återställ en backup på den lokala servern med annat namn. 17.2.1 Det finns en backup på databasen DBC i labfilerna som hör till laborationen

som heter DBC.bak. Kopiera den till din dators temp-katalog. Anslut till din lokala server med som systemansvarig. Högerklicka på

databases-mappen och välj Restore Database… Anm.I SQL Server 2012 ser följande något annorlunda ut

General sidan Anm. I SQL Server 2012 2012 gäller omvänd ordning

Eftersom du troligen redan har en databas med samma namn byter vi namn till DBC_copy som destinationsnamn. Notera att det går att välja till viss tidpunkt på raden under. Vi ska ta med så mycket som möjligt.

Eftersom databasen inte är säkerhetskopierad från denna server finns inga backuper i fönstret. Välj From device alternativet och navigera fram till säkerhets-kopian DBC.bak. Markera Restore-rutan. Options - sidan - Ange destination för databasfilerna

Anm. I SQL Server 2012 2012 finns detta på Files - sidan

Du ska nu specificera plats för databasfilerna. De ska ligga i C:\data resp. C:\log där du har dina andra filer. OBS Eftersom du gör en kopia kan du inte ha samma fysiska namn som originalet. Ändra därför till: C:\data\dbc_copy1.mdf och analogt för de andra. Anm. I SQL Server 2012 ska du avmarkera Take tail-log backup på Options-sidan

Slutför nu Restore! Justera users i den nya databasen Bl. a. dbcAdmin, WebAdmin och WebUser är users i denna databas och har naturligtvis inte samma SID som dina users med samma namn. Justera det med något av de sätten som diskuterades i föregående avsnitt. Kontrollera att de kommer åt det de ska. Klart!

Redovisning 17.2 17.2.50 a) Går det att flytta (kopiera) databaser mellan servrar med Backup och

Restore? b) Kan databasen erhålla ett nytt namn på den nya destinationen? c) Hur löste du om-mappningen av användarna?

Page 17: Administration av SQL Server Laboration ADM2orion.lnu.se/pub/education/course/1DV423... · 2014-12-03 · Laboration ADM2 Redovisning All uppgifter ska göras. Skriv ner svaren på

LAB ADM 2 Ver 2012-09-30

© Tommy Löfqvist 2000-2012 17

17.3 Kopiera Databas med Copy Database Wizard Copy Database Wizard är duktig på att kopiera en hel databas mellan olika servrar och att fixa felmappade användare. En nackdel är att den som kopierar måste ha sysadmin rättigheter på både käll- och målservern. Vi nöjer oss därför att kopiera inom servern genom att göra en kopia på Northwind-basen vilket kan vara användbart när man inte vill experimentera med produktions-databasen. 17.3.1 Gör en kopia av Northwind-databasen med det nya namnet NW2. Använd

Copy Database Wizard. o Starta SQL Server Agent om den inte redan är igång o Högerklicka på Northwind-databasen och välj TasksfCopy Database… o En Wizard leder dig genom kopieringen. Använd SQL Management Object

method. o Kontrollera att det inte blir samma namn på filerna som den redan existerande. o Namnge Package Name till: copyNW o Run immediately

Om du får Catastrophic error så använd Export Data.. från samma meny istället!

17.3.2 Refresha MStudio och kontrollera att databasen har kopierats riktigt. Notera

att kopieringen hamnat som ett Job under Agenten som kan schemaläggas eller köras när som helst.

17.4 Skripta databas och data Databasens schema dvs all information om inställningar, tabeller och andra objekt kan lätt skriptas. Skriptet kan lätt köras på annan MS SQL Server för att installera databasen. OBS! Det är osannolikt att du kan köra skriptet felfritt på annan RDBMS än MS SQL Server. Mål: Att skripta databasen DBC och dess tabeller, users och data Anm. Med SQL Server 2012 kan man scripta både databas och dess tabeller på samma gång

17.4.01 Öppna MStudio och markera databasen DBC som du har sedan tidigare. Högerklicka och välj Script database as… och skripta databasen. Byt namn från DBC till ABC skriptet (Sök och byt ut) och kör skriptet så att du får en ny databas.

17.4.02 Högerklicka och välj Tasksf Generate Scripts… Försök själv generera skript av tabeller, data, logins, users, constraints, index mm. med hjälp av den wizard som dyker upp. Kör därefter skriptet så att tabellerna hamnar i rätt databas.

Följande kan vara lämpligt att enabla: "script logins", "script object level Permissions", "Script Data", "Script Indexes",

17.4.03 Gå därefter in i MStudio - Refresha databaserna och öppna den nya databasen. Kontrollera om det finns några data i personal-tabellen?

Redovisning 17.4 17.4.50 Redovisa den kod i skriptet som fyller på Personal-tabellen med data

Gratulerar! Du har nu fullföljt alla övningarna i administratörskursen.

/Sven och Stina