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
-SourceInstancestringRequired, Reference SQL Server instance.
-TargetInstancestringRequired, Instance to compare against the source.
-SqlCredentialPSCredentialOptional, Used 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.
-CompareLoginsswitchSwitch$falseWenn gesetzt, werden Server-Logins verglichen (Vorhanden, SID, Standard-DB, Sprache, Deaktiviert-Status, Server-Rollen, Passwort-Hash, Datenbankzuordnung und Datenbankrollen je Datenbank).
-ExcludeLoginstring[]Optional@()Nur mit -CompareLogins relevant. Diese Logins ausschliessen (Wildcards erlaubt).
-IncludeMigrationObjectsswitchSwitch$falseWenn gesetzt, werden zusaetzlich migrationsrelevante Serverobjekte verglichen: Linked Servers, Credentials, SQL-Agent-Jobs, Endpoints, Database-Mail-Profile.
-IncludeSystemLoginsswitchSwitch$falseNur mit -CompareLogins relevant. Wenn gesetzt, werden auch Systemlogins (sa, ##MS_*, NT SERVICE\*, NT AUTHORITY\*, BUILTIN\*) verglichen. Standard: ausgeblendet, da 'sa' und Systemkonten instanzspezifische Zufallswerte haben und keinen echten Drift darstellen.
-Loginstring[]Optional@()Nur mit -CompareLogins relevant. Nur diese Logins vergleichen (Wildcards erlaubt).
-NoOpenswitchSwitch$falseUnterdrueckt das automatische Oeffnen des Reports.
-NoReportswitchSwitch$falseUeberspringt die Report-Erstellung (nur Rueckgabeobjekt, z.B. fuer Skript-Weiterverarbeitung).
-OutputPathstringOptional(Get-sqmDefaultOutputPath)Ausgabeverzeichnis fuer TXT/HTML. Standard: aus Modulkonfiguration.

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