Test-SqlAvailabilityGroup
Evaluates the health of an availability group.
Syntax
Test-SqlAvailabilityGroup
[-ShowPolicyDetails]
[-AllowUserPolicies]
[-NoRefresh]
[[-Path] <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Test-SqlAvailabilityGroup
[-ShowPolicyDetails]
[-AllowUserPolicies]
[-NoRefresh]
[-InputObject] <AvailabilityGroup[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
The Test-SqlAvailabilityGroup cmdlet evaluates the health of an availability group.
This cmdlet evaluates SQL Server policy-based management policies.
To run this cmdlet, you must have CONNECT
, VIEW SERVER STATE
, and VIEW ANY DEFINITION
user rights.
Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.
Examples
Example 1: Evaluate the health of an availability group
PS C:\> Test-SqlAvailabilityGroup -Path "SQLSERVER:\Sql\Server\InstanceName\AvailabilityGroups\MainAG"
This command evaluates the health of the availability group named MainAG
.
The command returns a summary.
Example 2: Evaluate the health of all availability group
PS C:\> Get-ChildItem "SQLSERVER:\Sql\Server\InstanceName\AvailabilityGroups" | Test-SqlAvailabilityGroup
This command gets all availability groups that have availability replicas in the specified location in the SQLSERVER: provider. The command passes them to the current cmdlet by using the pipeline operator. That cmdlet evaluates the health of each availability group.
Example 3: Display results for each policy of an availability group
PS C:\> Test-SqlAvailabilityGroup -Path "SQLSERVER:\Sql\Server\InstanceName\AvailabilityGroups\MainAG" -ShowPolicyDetails
This command evaluates the health of the availability group named MainAG
.
This command specifies the ShowPolicyDetails parameter.
Therefore, it displays the evaluation results for each policy-based management policy that ran.
Example 4: Display results for userdefined policies of an availability group
PS C:\> Test-SqlAvailabilityGroup -Path "SQLSERVER:\Sql\Server\InstanceName\AvailabilityGroups\MainAG" -AllowUserPolicies
This command evaluates the health of the availability group named MainAG
.
The command includes user-defined policies in this evaluation.
Example 5: Get groups that have an error state
PS C:\> Get-ChildItem "SQLSERVER:\Sql\Server\InstanceName\AvailabilityGroups" | Test-SqlAvailabilityGroup | Where-Object { $_.HealthState -eq "Error" }
This command gets all availability groups that have availability replicas in the specified location in the SQLSERVER: provider. The command passes them to the current cmdlet by using the pipeline operator. That cmdlet evaluates the health of each availability group. The command passes those results to the Where-Object cmdlet, which returns results based on the HealthState property.
Parameters
-AllowUserPolicies
Indicates that this cmdlet tests user policies found in the policy categories of Always On Availability Groups.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Prompts you for confirmation before running the cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Specifies an array of availability group, as AvailabilityGroup objects. This cmdlet evaluates the health of the availability groups that this parameter specifies.
Type: | AvailabilityGroup[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NoRefresh
Indicates that will not refresh the objects specified by the Path or InputObject parameter.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Specifies the path of the availability group that this cmdlet evaluates. If you do not specify this parameter, this cmdlet uses current working location.
Type: | String[] |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ShowPolicyDetails
Indicates that this cmdlet displays the result of each policy evaluation that it performs. The cmdlet returns one object per policy evaluation. Each policy object includes the results of evaluation. This information includes whether the policy passed or not, the policy name, and policy category.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Shows what would happen if the cmdlet runs. The cmdlet is not run.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Inputs
Microsoft.SqlServer.Management.Smo.AvailabilityGroup[]