After the rebase onto 1.4 the 16 SQLI-WIN/SQLI-SYN scripts had their own /* */ format, so SqlScriptTests (rule ids, review header, -- Kilde: blocks) failed. - The scripts have main's header (Regel-id, Titel, Alvor, Versioner, Vurdering, Grænseværdier, Rettigheder, Data kommer fra, Regelkode, Read-only); the Windows WQL/XPath stays word for word in comments. - The synthetic SQL check's SQL is registered (SyntheticCheckRunner.UseDatabaseSql, BeginTransactionSql, RollbackSql, SyntheticCheckSettings.DefaultQuery) and shown as -- Kilde: blocks in SQLI-SYN-001/002 and _collectors/SyntheticCheckRunner.sql. - SqlScriptTests know ServerRuleCatalog; only those rules may be without SQL blocks. - ServerScriptTests: every CimQueries query/filter is in a SQLI-WIN script word for word. - The SQL check cancels the rest of a large answer instead of draining it on close. - Rule counts: README (108 built-in: 92 SQL Server + 13 Windows + 3 synthetic), SQL Scripts/README (rule table, 124 rules, Windows/synthetic section), RuleCatalogTests, CONTRIBUTING (how to add a server rule). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
50 lines
3.2 KiB
Transact-SQL
50 lines
3.2 KiB
Transact-SQL
-- ===================================================================================================================
|
|
-- Collector: SyntheticCheckRunner (syntetiske SQL-tjek, fra 1.5)
|
|
-- ===================================================================================================================
|
|
-- Hvad: Et syntetisk SQL-tjek logger på den instans, tjekket peger på, som tjekkets login (agentens Windows-konto
|
|
-- eller et SQL-login, hvis adgangskode er krypteret til agenten), og kører tjekkets forespørgsel i en
|
|
-- transaktion, der altid rulles tilbage. Svartiden og om det lykkedes bruges af SQLI-SYN-001 og SQLI-SYN-002.
|
|
-- Fil: src/SQLInsight.Servers/Synthetic/SyntheticCheckRunner.cs (kaldt af src/SQLInsight.Agent/Servers/SyntheticCheckService.cs)
|
|
-- Interval: Tjekkets eget interval (standard 300 sek, mindst 60), og når der bedes om "Kør nu"
|
|
-- Versioner: SQL Server 2005 og nyere.
|
|
--
|
|
-- Rettigheder: Login'et i tjekket skal kunne logge ind og køre forespørgslen. Til standardforespørgslen (SELECT 1) er
|
|
-- det nok at kunne logge ind (og CONNECT til databasen, hvis tjekket har en).
|
|
--
|
|
-- Bruges af: SQLI-SYN-001, SQLI-SYN-002.
|
|
-- Read-only: Ja. Forespørgslen valideres som én skrivebeskyttet SELECT, når tjekket gemmes og før hver kørsel
|
|
-- (src/SQLInsight.Core/CustomRules/ReadOnlyQuery.cs: ingen andre sætninger, ingen INTO, EXEC, sekvenser
|
|
-- eller låse-hints), og køres i en transaktion, der altid rulles tilbage. Højst 10.000 rækker læses.
|
|
-- Kørsel: Kør i SSMS som tjekkets login. Hver GO er en separat kommando på samme forbindelse; ret [msdb] til
|
|
-- tjekkets database, eller udelad USE, hvis tjekket ingen database har.
|
|
-- ===================================================================================================================
|
|
|
|
-- Variant: Alle versioner: sættes på hver forbindelse, agenten åbner (også tjekkets)
|
|
-- Kilde: SqlConnectionFactory.SessionSettings
|
|
-- Kode: src/SQLInsight.Connectivity/SqlConnectionFactory.cs : SqlConnectionFactory.SessionSettings
|
|
SET LOCK_TIMEOUT 5000; SET DEADLOCK_PRIORITY LOW; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
|
GO
|
|
|
|
-- Variant: Kun når tjekket har en database (vist for msdb)
|
|
-- Kilde: SyntheticCheckRunner.UseDatabaseSql
|
|
-- Kode: src/SQLInsight.Servers/Synthetic/SyntheticCheckRunner.cs : SyntheticCheckRunner.UseDatabaseSql(database)
|
|
USE [msdb];
|
|
GO
|
|
|
|
-- Variant: Alle versioner fra SQL Server 2005: før forespørgslen
|
|
-- Kilde: SyntheticCheckRunner.BeginTransactionSql
|
|
-- Kode: src/SQLInsight.Servers/Synthetic/SyntheticCheckRunner.cs : SyntheticCheckRunner.BeginTransactionSql
|
|
BEGIN TRANSACTION;
|
|
GO
|
|
|
|
-- Variant: Standardforespørgslen, når tjekket ikke har sin egen (en egen forespørgsel køres her i stedet, højst 10.000 rækker læses)
|
|
-- Kilde: SyntheticCheckSettings.DefaultQuery
|
|
-- Kode: src/SQLInsight.Core/SyntheticChecks/SyntheticCheckDefinitions.cs : SyntheticCheckSettings.DefaultQuery
|
|
SELECT 1
|
|
GO
|
|
|
|
-- Variant: Alle versioner fra SQL Server 2005: altid efter forespørgslen, også når den fejler
|
|
-- Kilde: SyntheticCheckRunner.RollbackSql
|
|
-- Kode: src/SQLInsight.Servers/Synthetic/SyntheticCheckRunner.cs : SyntheticCheckRunner.RollbackSql
|
|
IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION;
|
|
GO
|