Administrator odpowiedzialny za kilka lub kilkadziesiąt instancji SQL Server prędzej czy później zadaje sobie pytanie:
Czy wiem dokładnie, czym zarządzam?
Lista serwerów w Excelu szybko przestaje wystarczać. Rozwiązaniem może być centralny rejestr instancji — mini-CMDB przygotowany dla SQL Server.
- nazwę serwera i instancji,
- port,
- środowisko,
- wersję i build,
- edycję,
- system operacyjny,
- właściciela technicznego,
- właściciela biznesowego,
- status monitoringu,
- datę ostatniego skanowania,
- status połączenia.
Przykładowa tabela
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| CREATE SCHEMA inventory;
GO
CREATE TABLE inventory.SqlInstance
(
SqlInstanceId int IDENTITY(1,1) NOT NULL,
ServerName sysname NOT NULL,
InstanceName sysname NULL,
Port int NULL,
EnvironmentCode varchar(20) NOT NULL,
ProductVersion varchar(50) NULL,
ProductLevel varchar(50) NULL,
Edition nvarchar(200) NULL,
TechnicalOwner nvarchar(200) NULL,
BusinessOwner nvarchar(200) NULL,
MonitoringEnabled bit NOT NULL
CONSTRAINT DF_SqlInstance_MonitoringEnabled DEFAULT (1),
LastScanAt datetime2(0) NULL,
LastConnectionStatus varchar(30) NULL,
IsActive bit NOT NULL
CONSTRAINT DF_SqlInstance_IsActive DEFAULT (1),
CreatedAt datetime2(0) NOT NULL
CONSTRAINT DF_SqlInstance_CreatedAt DEFAULT (SYSDATETIME()),
CONSTRAINT PK_SqlInstance PRIMARY KEY CLUSTERED (SqlInstanceId),
CONSTRAINT UQ_SqlInstance_Server_Instance
UNIQUE (ServerName, InstanceName)
);
GO
|
Historia skanowania
Aktualny stan to za mało. Warto przechowywać historię:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| CREATE TABLE inventory.InstanceScan
(
InstanceScanId bigint IDENTITY(1,1) NOT NULL,
SqlInstanceId int NOT NULL,
ScanStartedAt datetime2(0) NOT NULL,
ScanFinishedAt datetime2(0) NULL,
ScanStatus varchar(30) NOT NULL,
ErrorMessage nvarchar(4000) NULL,
ProductVersion varchar(50) NULL,
Edition nvarchar(200) NULL,
DatabaseCount int NULL,
CONSTRAINT PK_InstanceScan PRIMARY KEY CLUSTERED (InstanceScanId)
);
GO
|
Dane zbierane z instancji
1
2
3
4
5
6
7
8
9
10
11
| SELECT
SERVERPROPERTY('MachineName') AS MachineName,
SERVERPROPERTY('ServerName') AS ServerName,
SERVERPROPERTY('InstanceName') AS InstanceName,
SERVERPROPERTY('ProductVersion') AS ProductVersion,
SERVERPROPERTY('ProductLevel') AS ProductLevel,
SERVERPROPERTY('Edition') AS Edition,
host_platform,
host_distribution,
host_release
FROM sys.dm_os_host_info;
|
Schemat działania kolektora
- Odczytaj listę instancji.
- Połącz się z każdą instancją.
- Wykonaj zapytanie inwentaryzacyjne.
- Zapisz wynik w bazie centralnej.
- Zapisz błąd połączenia.
- Wygeneruj raport braków.
Co daje centralny rejestr?
Staje się fundamentem dla:
- patch management,
- audytu konfiguracji,
- kontroli backupów,
- monitoringu jobów,
- analizy pojemności,
- migracji,
- raportowania dla audytu.
Podsumowanie
Mini-CMDB nie musi być ogromnym projektem.
Można rozpocząć od jednej tabeli, prostego kolektora i codziennego raportu.
Spokojny DBA nie szuka serwerów w starych plikach Excel.
Ma jedno miejsce, które odpowiada na pytanie:
Jakie instancje utrzymujemy, w jakim są stanie i kto za nie odpowiada?