A DBA should be able to review every statement SQLInsight sends to a monitored server before granting it access. "SQL Scripts/<rule-id>.sql" holds, per rule (82 built-in, 16 community), a Danish header (what and why, how C# judges the data, thresholds with config keys, severity, exact GRANTs, versions, collector file and member) and the collector's SQL verbatim, every version variant as its own batch. "_collectors/<Collector>.sql" holds each collector's queries once. The only statement that is not strictly read-only is documented in the scripts: the deadlock collector's session temp table (#system_health). Inline SQL in the collectors moved to internal constants and Build*Sql methods (no text changed), so SqlScriptTests can check that the scripts still contain the SQL the code sends, that every rule has a script, that every collector query is registered, and that nothing writes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
84 lines
4.3 KiB
Transact-SQL
84 lines
4.3 KiB
Transact-SQL
-- ===================================================================================================================
|
|
-- Collector: ServerCollector ("server")
|
|
-- ===================================================================================================================
|
|
-- Hvad: Starttidspunkt, logiske CPU'er, schedulers, NUMA-noder, fysisk hukommelse og virtualisering.
|
|
-- Fil: src/SQLInsight.Collectors/Instance/ServerCollector.cs
|
|
-- Interval: 15 min som standard (SQLInsight:CollectorIntervals:server)
|
|
-- Versioner: Alle (SQL Server 2000 og nyere)
|
|
--
|
|
-- Rettigheder til agentens login (se db/permissions/grant-least-privilege.sql; [agent] = agentens login):
|
|
-- GRANT VIEW SERVER STATE TO [agent]; -- SQL Server 2005-2019
|
|
-- GRANT VIEW SERVER PERFORMANCE STATE TO [agent]; -- SQL Server 2022+ (erstatter VIEW SERVER STATE)
|
|
-- GRANT VIEW SERVER SECURITY STATE TO [agent]; -- SQL Server 2022+
|
|
-- SQL Server 2000 har ikke VIEW SERVER STATE; se docs/legacy-versions.md (fx kræver DBCC SQLPERF(WAITSTATS) forhøjede rettigheder).
|
|
--
|
|
-- Bruges af: SQLI-CFG-001, SQLI-CFG-002, SQLI-CFG-003, SQLI-CFG-004, SQLI-DB-015
|
|
-- Read-only: Ja: kun SELECT samt xp_msver (læser versionsoplysninger), SET-sessionsindstillinger. Intet ændrer
|
|
-- data, indstillinger eller objekter.
|
|
-- Kørsel: Kør i SSMS som agentens login. Hver variant er sin egen batch (GO); en variant for en anden SQL Server-version
|
|
-- end din kan fejle - det er forventet. Agenten kører altid med sessionsindstillingerne i _collectors/InstanceProbe.sql.
|
|
-- ===================================================================================================================
|
|
|
|
-- Variant: SQL Server 2012 og nyere
|
|
-- Kilde: ServerCollector.BuildSql(2012+)
|
|
-- Kode: src/SQLInsight.Collectors/Instance/ServerCollector.cs : ServerCollector.BuildSql(version)
|
|
SELECT
|
|
(SELECT sqlserver_start_time FROM sys.dm_os_sys_info),
|
|
cpu_count,
|
|
(SELECT COUNT(*) FROM sys.dm_os_schedulers WHERE status = N'VISIBLE ONLINE'),
|
|
(SELECT COUNT(DISTINCT parent_node_id) FROM sys.dm_os_schedulers WHERE status = N'VISIBLE ONLINE'),
|
|
physical_memory_kb / 1024,
|
|
virtual_machine_type_desc
|
|
FROM sys.dm_os_sys_info
|
|
GO
|
|
|
|
-- Variant: SQL Server 2008 R2 SP1 og senere 2008 R2-builds
|
|
-- Kilde: ServerCollector.BuildSql(2008 R2 SP1)
|
|
-- Kode: src/SQLInsight.Collectors/Instance/ServerCollector.cs : ServerCollector.BuildSql(version)
|
|
SELECT
|
|
(SELECT sqlserver_start_time FROM sys.dm_os_sys_info),
|
|
cpu_count,
|
|
(SELECT COUNT(*) FROM sys.dm_os_schedulers WHERE status = N'VISIBLE ONLINE'),
|
|
(SELECT COUNT(DISTINCT parent_node_id) FROM sys.dm_os_schedulers WHERE status = N'VISIBLE ONLINE'),
|
|
physical_memory_in_bytes / 1048576,
|
|
virtual_machine_type_desc
|
|
FROM sys.dm_os_sys_info
|
|
GO
|
|
|
|
-- Variant: SQL Server 2008 og 2008 R2 før SP1
|
|
-- Kilde: ServerCollector.BuildSql(2008)
|
|
-- Kode: src/SQLInsight.Collectors/Instance/ServerCollector.cs : ServerCollector.BuildSql(version)
|
|
SELECT
|
|
(SELECT sqlserver_start_time FROM sys.dm_os_sys_info),
|
|
cpu_count,
|
|
(SELECT COUNT(*) FROM sys.dm_os_schedulers WHERE status = N'VISIBLE ONLINE'),
|
|
(SELECT COUNT(DISTINCT parent_node_id) FROM sys.dm_os_schedulers WHERE status = N'VISIBLE ONLINE'),
|
|
physical_memory_in_bytes / 1048576,
|
|
CAST(NULL AS nvarchar(60))
|
|
FROM sys.dm_os_sys_info
|
|
GO
|
|
|
|
-- Variant: SQL Server 2005
|
|
-- Kilde: ServerCollector.BuildSql(2005)
|
|
-- Kode: src/SQLInsight.Collectors/Instance/ServerCollector.cs : ServerCollector.BuildSql(version)
|
|
SELECT
|
|
(SELECT create_date FROM sys.databases WHERE database_id = 2),
|
|
cpu_count,
|
|
(SELECT COUNT(*) FROM sys.dm_os_schedulers WHERE status = N'VISIBLE ONLINE'),
|
|
(SELECT COUNT(DISTINCT parent_node_id) FROM sys.dm_os_schedulers WHERE status = N'VISIBLE ONLINE'),
|
|
physical_memory_in_bytes / 1048576,
|
|
CAST(NULL AS nvarchar(60))
|
|
FROM sys.dm_os_sys_info
|
|
GO
|
|
|
|
-- Variant: SQL Server 2000 (legacy ODBC-sti): starttidspunkt
|
|
-- Kilde: ServerCollector.StartTimeSql(2000)
|
|
-- Kode: src/SQLInsight.Collectors/Db.cs : Db.StartTimeSql(version)
|
|
SELECT (SELECT login_time FROM master.dbo.sysprocesses WHERE spid = 1)
|
|
GO
|
|
|
|
-- Variant: SQL Server 2000 (legacy ODBC-sti): CPU og hukommelse
|
|
-- Kilde: ServerCollector.Sql2000
|
|
-- Kode: src/SQLInsight.Collectors/Instance/ServerCollector.cs : ServerCollector.Sql2000
|
|
EXEC master.dbo.xp_msver
|
|
GO
|