Always On

Sync-sqmAgNode

Synchronises server-level objects — Logins, SQL Agent Jobs, Linked Servers, Operators, and Alerts — from the primary to all secondary replicas of an Availability Group using dbatools copy cmdlets.

Module: sqmSQLTool
Requires: dbatools
ShouldProcess: Yes (None)
Output: PSCustomObject[]

Execution Flow

START 1. Get-DbaAvailabilityGroup → resolve primary + secondary replicas AG found? throw error foreach secondary replica foreach object type (unless excluded via -ExcludeType) Type excluded? skip Copy-DbaLogin / Copy-DbaAgentJob / Copy-DbaLinkedServer… -ObjectName filter set? filter by name pattern Error during copy? log warning or rethrow Collect result (ObjectType, ObjectName, Status, Secondary) Return PSCustomObject[] (all sync results) DONE
Object types: Logins, Jobs, LinkedServers, Operators, Alerts. Use -ExcludeType to skip categories. -IncludeSystemObjects also syncs system logins (sa, ##MS_*##). -ContinueOnError lets the sync continue when individual objects fail. Errors are always written via Invoke-sqmLogging.

Parameters

ParameterTypeRequiredDescription
-SqlInstanceStringOptionalPrimary replica instance. Default: $env:COMPUTERNAME.
-SqlCredentialPSCredentialOptionalSQL authentication credential.
-AvailabilityGroupStringOptionalTarget AG name. If omitted, all AGs on the instance are processed.
-ExcludeTypeString[]OptionalObject types to skip. Values: Logins, Jobs, LinkedServers, Operators, Alerts.
-ObjectNameStringOptionalWildcard filter — only sync objects matching this name pattern.
-IncludeSystemObjectsSwitchOptionalAlso sync system logins and system SQL Agent jobs.
-ContinueOnErrorSwitchOptionalLog errors as warnings and continue instead of aborting.
-EnableExceptionSwitchOptionalRe-throw errors as terminating exceptions.
-WhatIf / -ConfirmSwitchOptionalStandard ShouldProcess support.

Return Value

Returns a PSCustomObject[] — one entry per synced object — with: Secondary, ObjectType, ObjectName, Status, Message.

Examples

Example 1 — Sync all object types to all AG secondaries

Sync-sqmAgNode -SqlInstance "SQL01" -AvailabilityGroup "AG_PROD"

Example 2 — Sync only Logins and Jobs, continue on error

Sync-sqmAgNode -SqlInstance "SQL01" -ExcludeType 'LinkedServers','Operators','Alerts' -ContinueOnError

Example 3 — Sync a single login by name

Sync-sqmAgNode -SqlInstance "SQL01" -ExcludeType 'Jobs','LinkedServers','Operators','Alerts' -ObjectName "DOMAIN\AppUser"