Strul med skript


Nä, nu är blir jag trött på det här. Har kämpat med ett skript ett tag. Kom på en lösning och testade på min dator och fick den att funka.

Loggade på jobbet och där sket det sig 😦

Det som ska göras är:

  1. Klon (Mount) från backupsystemet till en viss server
  2. Skapa snapshot på klonen
  3. Köra DBCC CHECKDB mot snapshoten
  4. Ta bort snapshoten
  5. Ta bort klonen (Unmount)

Punkt 1: Klon/mount har jag kört skriptet manuellt och fick veta igår e.m. att det är bäst att köra med REST API för ett tjänstekonto. Får lära mig REST API! Dels fanns det exempel sa leverantören och visade mig sen har jag kollegor som jobbar med sånt. Så det löser sig.

Punkt 2: fick jag att funka i torsdags, men jag hade inte tagit hänsyn till om en databas innehåller flera datafiler. Flera olika skript hittades på nätet, men jag fick den inte att funka. De hade hårdkodat databasnamnet! Så ikväll kom jag på hur jag fixar det så att det blir dynamiskt med hjälp av cursor. Kan säkert göras på bättre sätt.

Punkt 3: DBCC CHECKDB på _snapshot funkar

Punkt 4: Ta bort snapshot funkar

Punkt 5: Får titta på de skript som leverantören visade igår e.m. Då det jag hittade på tog bort ALLA snapshot som en viss databas hade och inte bara det vill skapa för att köra checkdb.

Det jag fick att funka hemma var att skapa en procedur som skapar snapshot på en viss databas, oavsett antal datafiler i databasen.

Sen anropar jag proceduren i ett annat skript med hjälp av cursor.
Cursorn behöver snyggas till, men den kör bara på databaser som slutar på _LM (Live Mount)

DECLARE @DB_Name nvarchar(max) 
DECLARE @Command nvarchar(max) 

DECLARE CreateSnapshot_Cursor CURSOR FOR 
SELECT name 
FROM MASTER.sys.sysdatabases WHERE name LIKE N'%_LM'

OPEN CreateSnapshot_Cursor 

FETCH NEXT FROM CreateSnapshot_Cursor INTO @DB_Name 

WHILE @@FETCH_STATUS = 0 
BEGIN 
     SELECT @Command = N'EXEC dba..usp_CreateDBSnapshot ' + @DB_Name 
     EXEC sp_executesql @Command 

     FETCH NEXT FROM CreateSnapshot_Cursor INTO @DB_Name 
END 

CLOSE CreateSnapshot_Cursor 
DEALLOCATE CreateSnapshot_Cursor  

Skapade 3 databaser, 2 med 2 datafiler och en med en datafil. Samtligas namn slutar på _LM.

Skriptet funkade bra hemma, men inte på jobbet som sagt 😦

Orsak? Strul med Live Mount. En databas hade blivit korrupt och stod på Recovery på. Så jag gjorde unmount på .

Den databas som jag hade skapat manuellt med 2 datafiler accepterades, men inte de mountade databaserna. Skapade en ny _LM databas och skriptet tog den databasen med och skapade snapshot på, men inte de som är en klon från en backup 😦

Får testa att skapa en ny procedur baserad på ett annat skript, där jag vet det funkar på klonade databaser och se om problemet är skriptet, eller om det nya backupsystemet. Klon skapas, men vi får larm på dessa och ibland hamnar de i Recovery läge 😦 Får skapa ännu ett ärende om klonade databaserna, igen.

Men nu ska jag försöka slappna av och ta helg, till imorgon (söndag kväll).

Det blev dryga 58 timmar extra i januari minus de 2 dagar jag tog ledigt och de timmar jag åkte hem i veckan då jag var dålig i magen. Typ bara 40 timmar extra.

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut /  Ändra )

Google-foto

Du kommenterar med ditt Google-konto. Logga ut /  Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut /  Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut /  Ändra )

Ansluter till %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.