sqlbootstraplog-review — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited sqlbootstraplog-review (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.
Analyze SQL Server Setup Bootstrap log artifacts to find why an installation, upgrade, patch (CU/SP), repair, or cluster node operation failed — and to flag risky setup-time configuration before it becomes production drift. Applies 24 checks (U1–U24) across four categories:
rules, partial feature failure, patch/upgrade per-instance failures, component update phase failures
prerequisites, cluster rules, policy blockers, Global Rules phase
setup crashes, failure-chain root-cause ordering, Datastore state files
initialization, TempDB layout, security surface, feature sprawl, directory placement
Setup runs three phases — (1) Global Rules verification, (2) Component update, (3) the user-requested action — and writes a dated log folder per run. This skill is the installation-layer counterpart to sqlerrorlog-review (runtime) and sqldbconfig-review (post-install drift).
Accept any of:
Summary_<MachineName>_<yyyyMMdd_HHmmss>.txt — overall result, machineproperties, discovered features, user input settings, detailed per-feature results, rules with failures or warnings
end of the file
<Feature>_<Architecture>_<Interaction>.log) — msiexec package logsunattended installs; passwords and PID are not saved into it)
descriptions, and execution status
%programfiles%\Microsoft SQL Server\<nnn>\Setup Bootstrap\Log\ <- Summary.txt
%programfiles%\Microsoft SQL Server\<nnn>\Setup Bootstrap\Log\<yyyyMMdd_HHmmss>\
Summary_<MachineName>_<yyyyMMdd_HHmmss>.txt
Detail.txt
ConfigurationFile.ini
SystemConfigurationCheck_Report.htm
<Name>.log <- MSI/MSP logs
Datastore\ <- XML state snapshots per execution phase
MSSQLSERVER\ ... <- per-instance subfolders when patching<nnn> matches the version being installed: 130 = SQL 2016, 140 = SQL 2017, 150 = SQL 2019, 160 = SQL 2022. All files in a log folder are archived into Log*.cab. Unattended-mode logs land in %temp%\sqlsetup*.log.
Before installing or patching, run scripts/check-pending-reboot.ps1 to detect the pending-reboot conditions that fail Setup's "Restart computer" rule (U7) — Component Based Servicing, Windows Update, PendingFileRenameOperations, pending computer rename, and the ConfigMgr client signal. Exit code 0 = clear, 1 = reboot pending. See scripts/README.md for usage.
report, or a mix.
Final result:, Exit code (Decimal):,Requested action:, Detailed results: (per-feature Status: / Component error code: / Error description:), and Rules with failures or warnings:.
the end for "error" / "exception"; search MSI logs for "value 3".
User Input Settings: section ofthe Summary (the same parameters appear in both).
later failures are usually cascade (U17).
"Cannot evaluate — <artifact> not provided" rather than skipping silently.
Final result: with Failed, Cancelled, orSetup completed with required actions (anything other than Passed)
Exit code (Decimal):, Requested action:, and every feature inDetailed results: whose Status: is not Passed. Report the Error description: and Component error code: for each failed feature, then continue with U2–U18 to find the root cause. The Next step for <feature>: lines state Microsoft's recommended recovery order (resolve, uninstall the feature, rerun setup).
Component error code: present in Detailed results: (commonly a0x84xxxxxx or 0x85xxxxxx setup facility code) or a negative Exit code (Decimal):
Error description:, and theError help link: URL (it encodes product version and event ID for Microsoft's troubleshooting lookup). Well-known example: 0x851A001A — "Wait on the Database Engine recovery handle failed" — means the engine did not start during configuration; the real cause is in the new instance's ERRORLOG (MSSQL<nn>.<INSTANCE>\MSSQL\LOG\ERRORLOG) — hand off to /sqlerrorlog-review.
Rules with failures or warnings: section lists any rule with Failedstatus (rule warnings alone are Info)
IsFirewallEnabled)Rules report file: line points at SystemConfigurationCheck_Report.htm, which holds a short description for every executed rule and its status — request it if the rule name alone is ambiguous.
Detailed results: shows at least one feature Failed while anotherfeature Passed in the same run
Reason for failure: says "an error occurred for a dependency of the feature" failed as cascade — fix the root feature first (typically Database Engine Services). Follow the Next Step: guidance per feature: resolve, uninstall the failed feature, rerun setup. Validate post-repair with /sqlerrorlog-review on first startup.
Requested action: is Patch, Upgrade, or RemovePatch AND the logfolder contains per-instance subfolders (e.g., ...\<yyyyMMdd_HHmmss>\MSSQLSERVER\) with at least one instance summary reporting failure while others passed
shared features, each with its own summary/detail set. A failed instance leaves the server with mixed binary versions — re-run the patch for the failed instance before the next maintenance window closes. Compare @@VERSION per instance to confirm.
Product Update Status: reports an error, or Detail.txt shows the media-update step failing (download blocked, WSUS/Microsoft Update unreachable)
proxy-restricted servers. Re-run with /UpdateEnabled=False (or UpdateEnabled=False in the INI) to skip the online check, or point UpdateSource at a local folder holding the downloaded CU. Patch to the target build immediately after install.
RebootRequiredCheck /"Restart computer" rule) in the Summary rules section or the rules report
PendingFileRenameOperationsunder HKLM\SYSTEM\CurrentControlSet\Control\Session Manager. Reboot, then rerun setup. Diagnose all five signals (CBS, Windows Update, pending file renames, pending computer rename, ConfigMgr) with this skill's scripts/check-pending-reboot.ps1 — run it with -ShowDetail to see which files are waiting and which product left the state behind. If the state returns after every reboot, an agent/AV product is re-creating it; clear that product before the maintenance window.
drive (install drive, system drive, or data/log directories)
and the Setup Bootstrap\Log folder grows per run. If the failure names a data/log directory from the INI, repoint INSTALLSQLDATADIR / SQLUSERDBDIR / SQLUSERDBLOGDIR to a volume with capacity (see U24).
installing user's rights (not local admin, cannot validate credentials), or a domain account lookup failure (wrong password, locked account, unreachable DC)
expired; run setup elevated from an account with local Administrators membership. For gMSA accounts, confirm the host has rights to retrieve the managed password. For cluster/AG node additions, the installing account also needs rights on the cluster object. Hand off to /sqlspn-review if Kerberos/SPN errors follow first startup.
OS version/edition not supported by the SQL Server version being installed
workaround — use a SQL Server version supported on that OS, or move to a supported OS. Check the target version's "hardware and software requirements" page on MS Learn for the exact prerequisite matrix.
cluster service validation, shared-disk checks, node membership, or cluster security policy rules
cluster rules are a subset. Confirm the installing account has cluster management rights and that all nodes run the same OS patch level. Pair with /sqlclusterlog-review when the cluster log shows resource failures around the same timestamp.
software restriction / AppLocker denial, unsigned or blocked MSI, media copied with a zone identifier (mark-of-the-web), or AV quarantining setup binaries
the zone identifier), add a temporary AppLocker/SRP exception for the setup folder, and exclude the setup working directories from real-time AV scanning for the duration of the maintenance window.
reaching feature selection — Summary shows only global rule results and no Detailed results: per-feature section
pending reboot, broken WMI). Fix the named global rule (apply U7–U12 patterns). If rules cannot even execute, verify WMI health and rerun from an elevated prompt.
(search the end of the file first, then keyword-search "error" / "exception" — the documented diagnostic method for this file)
is the action that stopped the run. Report the failing action name, the exception type, the inner exception (when present — it usually carries the OS error), and the timestamps. Map the action back to the feature reported in U1.
Return value 3 (the documented failure marker —search "value 3" and read the lines immediately before it)
Return value 3 is thefailure point; the surrounding lines carry the real Windows Installer error (1603, 1935, 1607, ...). Report the failing action, the MSI error code, and the package name from the log file name (<Feature>_<Architecture>_<Interaction>.log). Generic 1603 with no obvious cause: check U12 (policy blockers) and Windows Installer service health.
abnormally (Watson bucket reference, "SQL Server Setup has encountered an error", an abrupt end of Detail.txt with no closing summary)
For crashes: rule out corrupt media (re-download, compare checksums), run from a local path instead of a network share, and check the Application event log for the crashing module. A Detail.txt that simply stops mid-action with a Final result of Pending often means the process was killed or the host restarted mid-run.
Reason for failure: text. Report exactly one root cause (the earliest independent failure); list the rest as cascade. Fixing the root cause and rerunning usually clears every dependent failure — do not chase dependency failures individually.
no action failed) AND the Datastore folder is available
Datastore\ subfolder holds XML dumps of every configuration object perexecution phase — a snapshot of what setup believed each setting to be. Ask for the relevant XML (instance settings, feature selections) and compare against the intended configuration. Useful for proving an INI/UI value was not what the operator expected.
These run on ConfigurationFile.ini or the User Input Settings: section of the Summary. Passwords, PID, and some parameters are not persisted to the INI — absence of a password parameter is normal, not a finding.
SQLSVCACCOUNT (or AGTSVCACCOUNT) is a shared built-in account(NT AUTHORITY\SYSTEM, NT AUTHORITY\NETWORK SERVICE) on a production multi-service install, or a regular domain user account where a gMSA/MSA was available
NT Service\MSSQLSERVER — the default)for standalone boxes, or gMSA for domain estates needing cross-machine identity (AG, Kerberos). Avoid LocalSystem for the engine. Changing later is done via SQL Server Configuration Manager (it re-grants the required rights) — not Services.msc.
SQLSVCINSTANTFILEINIT is false or absent in the INI / User InputSettings — SQL 2016+ (the parameter grants "Perform volume maintenance tasks" to the engine account during setup)
restore and autogrow time. Grant now: add the engine service account to "Perform volume maintenance tasks" (secpol.msc) and restart, or reinstall pattern for fleets: /SQLSVCINSTANTFILEINIT="True" in the INI. Verify with sys.dm_server_services.instant_file_initialization_enabled (cross-check /sqldbconfig-review B22). Log files do not use IFI (except SQL 2022+ log growths up to 64 MB).
SQLTEMPDBFILECOUNT < MIN(logical processors, 8), orSQLTEMPDBFILESIZE left at the 8 MB default for a production engine — SQL 2016+ (setup-time TempDB parameters)
SQLTEMPDBFILECOUNT = MIN(logical processors, 8), equal SQLTEMPDBFILESIZE for all files (hundreds of MB to GBs for busy OLTP), matching SQLTEMPDBFILEGROWTH, and a dedicated volume via SQLTEMPDBDIR (see U24). Already installed? Fix live and validate with /sqldbconfig-review B23 and /sqldiskio-review Z7–Z9.
SECURITYMODE=SQL (mixed authentication) without a stated requirement;TCPENABLED=0 on a server meant to accept remote connections (or 1 on a local-only box); NPENABLED=1 (named pipes) without a legacy client need
sa attack surface — prefer Windows authentication andenable mixed mode only for documented application needs (then rename/disable sa). Align protocol flags with intent; change later in SQL Server Configuration Manager (TCP/NP per instance). Cross-check post-install posture with /sqldbconfig-review B24–B28.
FEATURES installs components beyond the stated purpose of the server(e.g., AS, RS, DQ, IS on an engine-only OLTP box)
competition (AS/RS run their own services outside max server memory). Uninstall unused features via Programs and Features → SQL Server → Remove, or keep the INI's FEATURES=SQLENGINE[,REPLICATION] minimal for the next build.
INSTALLSQLDATADIR, SQLUSERDBDIR, SQLUSERDBLOGDIR, SQLTEMPDBDIR,and SQLBACKUPDIR resolve to the same volume, or any of them sit on the system drive (defaults under C:\Program Files\Microsoft SQL Server\ count)
log, TempDB, and backups each on appropriate volumes; nothing growing on the system drive. The INI parameters map 1:1 to the Database Engine Configuration → Data Directories setup page. Post-install validation: /sqldiskio-review Z6–Z10.
If the SQL Server version is stated by the user or visible in the Summary (Version: under Package properties), read VERSION_COMPATIBILITY.md (~/.claude/skills/VERSION_COMPATIBILITY.md if installed, or skills/VERSION_COMPATIBILITY.md from the repo). If unavailable, skip silently. For checks whose minimum version exceeds the instance version: verbose mode → log as SKIP (version: requires SQL 20XX+, instance is SQL 20YY); standard report → omit entirely. Do not suppress NOT ASSESSED rows from missing input — only suppress version-inapplicable checks. This skill applies to SQL Server on Windows only — the Setup Bootstrap log layout does not exist on SQL Server on Linux, Azure SQL Database, or Azure SQL Managed Instance.
Present findings in this order:
log folder timestamp.
| Check | Severity | Artifact | Finding | Fix |
|---|---|---|---|---|
| U1 | Critical | Summary.txt | Final result Failed, exit 0x851A001A on SQLEngine | Check new instance ERRORLOG; see U2 |
and evidence lines quoted.
if required → rerun → post-install validation), with companion skill references.
Analyzed by: sqlbootstraplog-review (U1–U24)/sqlerrorlog-review — the engine ERRORLOG explains "Wait on the Database Enginerecovery handle failed" (0x851A001A) and any post-install startup failure; run it on the new instance's first ERRORLOG
/sqldbconfig-review — validates the running instance against the configuration theINI promised (IFI B22, TempDB B23, surface area B24–B28)
/sqlclusterlog-review — when cluster rules fail (U11) or an AddNode operation breaksmid-flight, the WSFC cluster log shows the cluster-side view
/sqldiskio-review — post-install validation of the directory/volume choices reviewedby U24
/sqlspn-review — service account changes at setup (U19) often surface later as SPNregistration failures
See skills/VERSION_COMPATIBILITY.md for the full compatibility matrix.
| Check | 2008 R2 | 2012 | 2014 | 2016 | 2017 | 2019 | 2022 | Azure SQL |
|---|---|---|---|---|---|---|---|---|
| U1–U18 (log analysis) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | N/A |
| U19 Service accounts | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | N/A |
| U20 IFI at setup | — | — | — | ✓ | ✓ | ✓ | ✓ | N/A |
| U21 TempDB at setup | — | — | — | ✓ | ✓ | ✓ | ✓ | N/A |
| U22–U24 (INI review) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | N/A |
Azure SQL Database and Azure SQL Managed Instance have no user-visible SQL Server Setup; this skill is for SQL Server on Windows.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.