Commands / Compare-sqmServerConfiguration
Compare-sqmServerConfiguration
Configuration sqmSQLTool v1.8.2+ · Compare
Compares important configuration settings between a source and a target SQL Server instance and returns only the differences as [PSCustomObject] rows.

Instance-level properties compared: Version, Edition, LoginMode, MaxMemory, MinMemory, MaxDop, CostThresholdForParallelism, BackupDirectory, DefaultFile, DefaultLog. Collation is always included as a reference row regardless of match.

With -CompareDatabases, user databases are also compared: Owner, RecoveryModel, and Collation per database. Missing databases on either side are reported as <missing>.

Parameters

ParameterTypeRequiredDefaultNotes
-SourceInstancestringRequiredReference SQL Server instance.
-TargetInstancestringRequiredInstance to compare against the source.
-SqlCredentialPSCredentialOptionalUsed for both instance connections. For different credentials per instance, connect manually first.
-CompareDatabasesswitchSwitch$falseAlso compare user databases (Owner, RecoveryModel, Collation). Missing databases are flagged.
-EnableExceptionswitchSwitch$falseThrow on error instead of returning $null.

Execution Flow

START dbatools installed? NO throw: dbatools not found YES Connect-DbaInstance → Get-ServerProps SourceInstance + TargetInstance: Version, Edition, LoginMode, MaxMemory, MinMemory, MaxDop, CTP, BackupDir, DefaultFile, DefaultLog Compare instance properties foreach key: Source ≠ Target → add to $results | Collation always added (reference row) -CompareDatabases set? NO skip database comparison YES Get-DbaDatabase both instances → compare per DB Owner, RecoveryModel, Collation | missing on either side → <missing> row Return $results [PSCustomObject[]] Setting, SourceValue, TargetValue, Category DONE

Examples

Compare two instances — instance-level settings only
Compare-sqmServerConfiguration -SourceInstance "SQL01" -TargetInstance "SQL02"
Include database-level comparison and format as table
Compare-sqmServerConfiguration -SourceInstance "SQL01" -TargetInstance "SQL02" -CompareDatabases | Format-Table