Lite strul!


Har inte kunnat släppa varför ett jobb inte funkar som det ska.

För någon månad sedan hittade jag på en sajt 2 alert som jag tyckte var bra att sno och testa i labb-miljön. Den jag började använda igår skulle larma att det har skett en failover i en AG och nu har en annan server den primära replikan.

Igår började jag snickra på skript som skulle göra failover på samtliga AG om en (eller fler) gjorde failover till annan server.

Det jag gjorde var en hårdkodning av AG namnen. Det funkade precis som jag ville ha det 🙂

Idag började jag snygga på skriptet för att få den mer dynamiskt. Där jag har tänkt att börja använda är det 5 (eller var det 6 st) AG. Det är Basic AG (Standard Edition) på de 2 servrarna (Och så är det miljöer, så det blir 4 servrar!)

Nya servrar har satts upp och nya AG ska in där. Det är lite oklart hur många AG kommer att skapas på de nya servrarna som är nyss uppsatta.

Så det är inte praktiskt och är obra att ha hårdkodade namn i jobbet.

Det dynamiska skriptet jag snickrade på i morse (som jag snott delar av andra) var inte snygg och funkade inte.

Så jag har försökt snygga till det, men hur än jag gjorde funkade det inte, inte om man körde det som jobb 😮

Hittade till slut felet. Alerten hade inte triggats sedan i morse runt 10:45! Såg sedan att det hade nollställs vilket jobb som ska köras om alerten triggas 😮 Vad?

Kom på att jag bytte namn på jobbet i morse och jag är typ säkert att jag hade kollat alerten, men uppenbarligen inte. Så namnbytet rensade inställningar.

Så nu funkar skiten 🙂

Jag får:

  • Snygga till skriptet
  • Hitta bättre namn på jobbet (och se till att det är kopplad till alerten!)
  • Sätta kategori på alerten (såg nu att det saknas kategori)
  • Skapa flera AG och testa mera
-- Alert: AG Failover Detected - Now Primary 

USE [msdb]
GO

IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = N'AG Failover Detected - Now Primary')
EXEC msdb.dbo.sp_add_alert @name=N'AG Failover Detected - Now Primary',
	@message_id=1480,
	@severity=0,
	@enabled=1,
	@delay_between_responses=0,
	@include_event_description_in=0,
	@event_description_keyword=N'"RESOLVING" to "PRIMARY"',
	@category_name=N'[Uncategorized]',
	@job_name=N'Failover på samtliga AG i händelse av failover av en AG'
GO
-- Jobb: Failover på samtliga AG i händelse av failover av en AG

SET NOCOUNT ON
DECLARE @AGName sysname, @Command nvarchar(Max);

DECLARE AG_Cursor CURSOR STATIC FOR
 
SELECT 
	AG.name AS [AvailabilityGroupName]
	--,ISNULL(agstates.primary_replica, '') AS [PrimaryReplicaServerName]

	FROM master.sys.availability_groups AS AG
		LEFT OUTER JOIN master.sys.dm_hadr_availability_group_states as agstates
		ON AG.group_id = agstates.group_id
		INNER JOIN master.sys.availability_replicas AS AR
		ON AG.group_id = AR.group_id
		INNER JOIN master.sys.dm_hadr_availability_replica_states AS arstates
		ON AR.replica_id = arstates.replica_id AND arstates.is_local = 1
	
WHERE ISNULL(agstates.primary_replica, '') <> @@SERVERNAME

OPEN AG_Cursor
FETCH NEXT FROM AG_Cursor into @AGName
WHILE @@FETCH_STATUS = 0
BEGIN

	SELECT @Command = N'ALTER AVAILABILITY GROUP ' 
	+ @AGName 
	+ ' FAILOVER';

	EXEC sp_executesql @Command;

FETCH NEXT FROM AG_Cursor into @AGName
END

CLOSE AG_Cursor;
DEALLOCATE AG_Cursor;

Edit: Ändrade senare till följande

CREATE OR ALTER PROC [dbo].[usp_Failover] AS

SET NOCOUNT ON
DECLARE @AGName sysname, @Command nvarchar(Max);

DECLARE AG_Cursor CURSOR STATIC FOR

	SELECT Groups.[Name] AS AGname
	FROM sys.dm_hadr_availability_group_states States
	INNER JOIN master.sys.availability_groups Groups 
		ON States.group_id = Groups.group_id
	WHERE primary_replica <> @@SERVERNAME

OPEN AG_Cursor
FETCH NEXT FROM AG_Cursor into @AGName
WHILE @@FETCH_STATUS = 0
BEGIN

	SELECT @Command = N'ALTER AVAILABILITY GROUP ' 
	+ @AGName 
	+ ' FAILOVER';

	EXEC sp_executesql @Command;

FETCH NEXT FROM AG_Cursor into @AGName
END

CLOSE AG_Cursor;
DEALLOCATE AG_Cursor;

Bytte namn på jobbet till ‘AG – Failover’ och där kickas proceduren när alert triggas.

-- Alert: AG Failover Detected - Now Primary 

USE [msdb]
GO

IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = N'AG Failover Detected - Now Primary')
EXEC msdb.dbo.sp_add_alert @name=N'AG Failover Detected - Now Primary',
	@message_id=1480,
	@severity=0,
	@enabled=1,
	@delay_between_responses=0,
	@include_event_description_in=0,
	@event_description_keyword=N'"RESOLVING" to "PRIMARY"',
	@category_name=N'[Uncategorized]',
	@job_name=N'AG - Failover'
GO

** . **


Har börjat använda byxor i veckan, har annars gått med shorts sedan i våras. Det var lite tajt så jag tänkte att jag medan jag jobbar med att tappa några ton så vore det skönt att ha något i en storlek större. Har annars gått i storlek 44 sedan 2010/2011.

Kollade på webben och hittade D124 (har annars D120 och D122 finns ej) i närheten av där jag bodde tidigare. Jag sökte på många ställen, men det var bättre pris där. Så istället för att beställa hem och betala frakt, så åkte jag dit runt 12:30. De hade lunchstängt.

Åkte mot Huskvarna och det var gatuarbeten här och var. Så jag vände och åkte tillbaka och stod och väntade tills de öppnade.

De hade inte den storleken och var fundersam om det ens fanns i den storleken. Det gjorde det för 3 år sedan när jag köpte de jag använder än idag. Så vände hem och för att gå vidare i varukorgen. Såg att jag var på annan sida än den affär som jag besökte en stund tidigare! Detta låg i Malmö! Och det var inte samma märke som jag hade kollat på!

Jaja, nu är det beställt. Det är inte så att jag måste ha den storleken, det är lite tajt att tar i lite när jag drar på och av utan att knäppa/knäppa upp, sp jag gjort tidigare.

Få se när jag får de nya byxorna. Kom på att jag nog har byxor i större storlek i källaren dessutom! Nä, det är bättre att kämpa lite och tappa så att jag byxorna sitter bekvämt istället.

##############

Den nya medicinen vet jag inte om det hjälper mot toaspring direkt. Den kan leda till förstoppning, så varannan dag har jag behövt gå på toa, men sen blir det spring i alla fall. Men jag ska att jag ska prova pillren i en månad, tills läkaren hör av sig. Typ 3 veckor kvar.

Mätarställning: 1463. 2,2 mil blev det idag.