scripts: vsql certificate script recovery paths from the second review
ci / frontend (push) Successful in 41s
ci / server (push) Successful in 11m2s
ci / image (push) Successful in 57s
ci / e2e (push) Failing after 4m25s

- A rollback record now says which restarts succeeded. A snapshot stays open
  while an instance is unrestored or its restart failed (or was declined), so
  -Rollback -RestartInstances retries exactly those instead of reporting done
  or stepping back to an older deployment.
- Running dependents (SQL Server Agent) are written to dependents-<service>.json
  before the stop and removed once they run again, so a failed restart does not
  leave Agent stopped for good.
- GetRegValue returns $null only for a value confirmed absent; a missing key or
  read error throws, so it is never snapshotted or verified as absent.
- Instances come from the value names of Instance Names\SQL; the 'PS*' filter
  dropped names such as PSREPORTING.

Tests for each, including the real registry operations on an HKCU test key.
Pester green on PowerShell 7.6 (63) and Windows PowerShell 5.1 (62, 1 skipped).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-10-18 21:50:34 -06:00
co-authored by Claude Opus 5.5
parent 90adcebc44
commit b7c22e1988
4 changed files with 204 additions and 39 deletions
+1 -1
View File
@@ -229,7 +229,7 @@ Docker's default address pool on docker-1 holds fifteen /16 bridge networks (172
Check the ERRORLOG line again. The production stack's own doctor run is Spencer's, with its own approval.
6. Rollback. Each deployment saved `deploy-<time>.json` in `C:\ProgramData\PacketStation\vsql-cert`. `-Rollback` restores the newest one not yet rolled back. It restores each instance on its own, reads each value back and lists any failure. Preview it, then run it:
6. Rollback. Each deployment saved `deploy-<time>.json` in `C:\ProgramData\PacketStation\vsql-cert`. `-Rollback` restores the newest one not yet rolled back. It restores each instance on its own, reads each value back and lists any failure. If a restart fails, fix the cause and run the same command again: it retries only the instances not yet restored or restarted, and starts SQL Server Agent if it ran before the failed attempt. Preview it, then run it:
```powershell
powershell -ExecutionPolicy Bypass -File .\Request-VsqlServerCertificate.ps1 -Rollback -Instances DEV -WhatIf