sqlserver-perf-triage — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited sqlserver-perf-triage (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Works against any SQL Server instance (2005 → current). The bundled script scripts/Invoke-SqlPerfTriage.ps1 collects a read-only diagnostic snapshot and emits JSON; the agent (you) writes the analysis. The script never modifies server or database state.SCRIPT = this skill's scripts/Invoke-SqlPerfTriage.ps1. Interpretation guide in REFERENCE.md. This script is vendored identically in the NAV 2009 and AX 2012 sibling skills — if the target database belongs to one of those applications, prefer the sibling skill for its application-specific interpretation.
-SqlCredential (Get-Credential) for SQL auth —never put a password on the command line.
db_owner) in thetarget database. The trace-flag sub-check may need sysadmin and degrades gracefully.
-Encrypt if the instance has a valid certificate.Always run with pwsh. Parse the JSON it prints on stdout.
| Want | Pass |
|---|---|
| Full snapshot of a DB | -ServerInstance SQLSRV01 -Database 'AppDB' |
| Named instance | -ServerInstance 'SQLSRV01\INST01' |
| Server-level only (no DB) | omit -Database (DB-scoped sections report skipped) |
| Only some sections | -Sections waits,blocking,deadlocks |
| SQL auth | -SqlCredential (Get-Credential) |
| Slow big DB | -QueryTimeout 300 (fragmentation scan is the slow one; or drop it from -Sections) |
| Save full report | -OutFile C:\path\triage.json |
Sections: server, database, waits, top_queries, missing_indexes, unused_indexes, blocking, deadlocks, sift, fragmentation, stats, largest_tables (default all). The sift section is NAV-specific and harmlessly reports 0 views on non-NAV databases.
Examples:
# Full triage of one database
pwsh -File SCRIPT -ServerInstance SQLSRV01 -Database 'AppDB' -OutFile C:\ops\triage.json
# "The server is slow right now" — live picture only
pwsh -File SCRIPT -ServerInstance SQLSRV01 -Sections waits,blocking,deadlocks,top_queriescounts) on stdout. Prefer -OutFile for full snapshots; read back only what you need.
Top level: status (ok/partial/error) and sections, each { status: ok|error|skipped, data|error|reason }. Timestamps in data are SQL Server local time; deadlock timestamps are UTC. Full schema in REFERENCE.md.
waiting on?) → top queries (who causes it?) → indexes/stats/config (why?). Use the interpretation table in REFERENCE.md.
concrete next action. Don't recite every section.
error/skipped section. Wait stats and index usageare cumulative since instance restart — state the window (server.system.sqlserver_start_time) before drawing conclusions.
systems like Dynamics NAV/AX drop out-of-band indexes on synchronization) — if yes, switch to the application-specific sibling skill.
Cannot connect → wrong instance name, SQL Browser off for named instances, firewall, auth.Check with Test-NetConnection <server> -Port 1433.
error: VIEW SERVER STATE permission was denied → request the grant; other sectionsstill ran.
deadlocks unsupported on SQL Server 2005 (no Extended Events) — offer trace flag 1222 asthe manual alternative.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.