powershelldba.de
REF: PSDB-IPU-2026 SCOPE: SQL Server 2016–2025, standalone instances STATUS: MIT — free & open
Module

Back up, uninstall, restore — the safe way to upgrade SQL Server in place.

InplaceUpDate is a free PowerShell script collection, not a compiled application, that backs up logins, linked servers, SSIS packages, the SSIS catalog, SSRS content, and SSAS databases before an in-place SQL Server upgrade — then restores them onto the reinstalled instance afterward. It refuses to uninstall the old version until it can prove a completed backup exists.

Why this exists

The SQL Server setup wizard upgrades the engine. It doesn't back up the rest.

An in-place upgrade wizard replaces the SQL Server binaries — it has no concept of your linked servers, SSIS packages, or SSRS content, and no way to know if you've backed any of it up before letting you uninstall.

Without itWith InplaceUpDate
Linked servers, SSIS packages, and SSRS content aren't preserved by an upgrade wizardAll backed up first, as a matched set, before uninstall is even offered
Forgetting one component means redoing work after the upgradeOne consistent backup set covering six SQL Server components
Nothing stops an uninstall from running before the backup finishesUninstall refuses to run without a completed backup summary to point at
Recreating logins from scratch means resetting every passwordLogin password hashes are preserved, not reset
A destructive step runs unattended by accidentEvery uninstall and restore action asks for an explicit yes/no first
Requirements

What it needs.

PowerShell5.1 or later
dbatools1.0 or later — Install-Module dbatools
RightsLocal Administrator on the server (uninstall/reinstall), sysadmin on the SQL instance
SSAS backup/restore (optional)The Analysis Services AMO assembly, auto-discovered from an SSMS 18/19 install; degrades gracefully to a manual-restore note if it isn't found
ScopeStandalone instances only — no Availability Group or Failover Cluster Instance handling
Workflow

Three scripts, and one step you do yourself.

  1. Back up — Start-SQLUpgradeBackup.ps1Captures all six components below into a timestamped backup set, and writes a summary file that proves the backup completed.
  2. Uninstall — Start-SQLUpgradeUninstall.ps1Checks for that summary file first and refuses to proceed without it, then removes the old SQL Server version via its own setup.exe.
  3. Install the new versionNot automated — you run the new SQL Server setup yourself, matching the original instance name.
  4. Restore — Start-SQLUpgradeRestore.ps1Replays the backup set onto the reinstalled instance, confirming each component individually before touching it.

The bundled launcher, Start-InplaceUpDate.cmd, presents these as a numbered menu and self-elevates via UAC — needed because a mapped network drive used to start the tool becomes unreachable once the process elevates.

What gets backed up

Six components, one backup set.

ComponentMethod
SQL logins & permissionsdbatools Export-DbaLogin (preserves password hashes), plus a T-SQL script covering server roles and grants/denies
Linked serversA T-SQL script rebuilding each linked server and its login mapping — connection passwords can't be exported by SQL Server itself, so those are flagged as needing manual re-entry
Legacy SSIS packagesEvery package in msdb exported as a .dtsx file, preserving folder structure; encrypted packages are flagged as needing their original password
SSIS Catalog (SSISDB)A full native database backup, plus CSV inventories of folders, projects, packages, and environments
SSRS content & configurationReports, data sources, and shared datasets exported directly from the ReportServer catalog, plus the SSRS config files themselves
SSAS databasesA native backup per database plus an XMLA definition script, via the Analysis Services AMO library
Before it lets you uninstall

A dependency check, and proof of backup.

Before touching anything, the backup step scans for ODBC DSNs, OLE DB providers, Visual Studio/SSDT installs, other SQL instances, and Windows services that depend on this one — anything high-severity stops and asks before continuing.

The uninstall step then requires a path to a completed backup set and checks for its summary file; without one, it warns loudly and asks for an explicit override rather than proceeding quietly. Once confirmed, it reads the currently installed features from the registry, stops the SQL Server, Agent, SSAS, and SSRS services, and runs the vendor's own setup.exe /ACTION=Uninstall — with optional, separately confirmed cleanup of leftover files, registry entries, and a reboot at the end.

Restore

Nothing runs until you say yes to it.

Once the new SQL Server version is installed, the restore step connects to it and walks through the same six components — each one only restored if you confirm it individually. T-SQL scripts are replayed batch by batch, tracking success and failure counts rather than stopping at the first error; SSISDB is restored as a full database; SSRS content is written back into the catalog directly; SSAS databases are restored per database via AMO. A restore summary is written out at the end, same as the backup step.

Rollback, honestly

There's no automated undo. The backup set is the rollback path.

If an uninstall or restore fails partway, there's no automatic recovery — you re-run the affected restore steps, or reinstall SQL Server again and restore from the same backup set. That's a real limitation, not an oversight: nothing here takes a VM snapshot or offers a one-click "undo the uninstall."

The actual safety net is upstream of that. The tool won't let an uninstall proceed without a provable, completed backup, and every destructive action is confirmed individually rather than run unattended — so the backup set you're left holding is always complete and current, which is what makes a manual restore a reliable rollback path in practice.

Usage

Run each phase from the command line.

# Phase 1 - back up everything before touching the install
.\Start-SQLUpgradeBackup.ps1 -SqlInstance 'SERVER01\SQL2019' -InstanceName 'SQL2019'

# Phase 2 - uninstall, pointing at the completed backup set
.\Start-SQLUpgradeUninstall.ps1 -InstanceName 'SQL2019' -BackupSetPath 'C:\SQLUpgrade_Backup\...'

# Phase 3 - install the new SQL Server version yourself (not automated)

# Phase 4 - restore onto the reinstalled instance
.\Start-SQLUpgradeRestore.ps1 -SqlInstance 'SERVER01\SQL2019' -BackupSetPath 'C:\SQLUpgrade_Backup\...'

Individual components can be skipped on the backup side with switches like -SkipSSAS or -SkipSSRS; the uninstall step's feature list and setup path can also be overridden explicitly rather than auto-detected.

Licensing

Free to use.

InplaceUpDate is released under the MIT License — no trial, no activation, same as the rest of the free tools in this suite.

Next steps

Fresh install vs. in-place upgrade — and what to check afterward.