Overview of PowerShell Cmdlets for Always On Availability Groups
Applies to: SQL Server
Microsoft PowerShell is a task-based command-line shell and scripting language designed especially for system administration. Always On availability groups provides a set of PowerShell cmdlets in SQL Server that enable you to deploy, manage, and monitor availability groups, availability replicas, and availability databases.
Note
A PowerShell cmdlet can complete by successfully initiating an action. This does not indicate that the intended work, such as the fail over of an availability group, has completed. When scripting a sequence of actions, you might have to check the status of actions, and wait for them to complete.
Note
For a list of topics in SQL Server Books Online that describe how to use cmdlets to perform Always On availability groups tasks, see the "Related Tasks" section of Overview of Always On Availability Groups (SQL Server).
Configuring a Server Instance for Always On Availability Groups
Cmdlets | Description | Supported on |
---|---|---|
Disable-SqlAlwaysOn | Disables the Always On availability groups feature on a server instance. | The server instance that is specified by the Path, InputObject, or Name parameter. (Must be an edition of SQL Server that supports Always On availability groups.) |
Enable-SqlAlwaysOn | Enables Always On availability groups on an instance of SQL Server that supports the Always On availability groups feature. For information about support for Always On availability groups, see Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server). | Any edition of SQL Server that supports Always On availability groups. |
New-SqlHadrEndPoint | Creates a new database mirroring endpoint on a server instance. This endpoint is required for data movement between primary and secondary databases. | Any instance of SQL Server |
Set-SqlHadrEndpoint | Changes the properties of an existing database mirroring endpoint, such as the name, state, or authentication properties. | A server instance that supports Always On availability groups and lacks a database mirroring endpoint |
Backing Up and Restoring Databases and Transaction Logs
Cmdlets | Description | Supported on |
---|---|---|
Backup-SqlDatabase | Creates a data or log backup. | Any online database (for Always On availability groups, a database on the server instance that hosts the primary replica) |
Restore-SqlDatabase | Restores a backup. | Any instance of SQL Server (for Always On availability groups, a server instance that hosts a secondary replica) |
Important
When preparing a secondary database, you must use the -NoRecovery parameter in every Restore-SqlDatabase command.
For information about using these cmdlets to prepare a secondary database, see Manually Prepare a Secondary Database for an Availability Group (SQL Server).
Creating and Managing an Availability Group
Cmdlets | Description | Supported on |
---|---|---|
New-SqlAvailabilityGroup | Creates a new availability group. | Server instance to host primary replica |
Remove-SqlAvailabilityGroup | Deletes availability group. | HADR-enabled server instance |
Set-SqlAvailabilityGroup | Sets the properties of an availability group; take an availability group online/offline | Server instance that hosts primary replica |
Switch-SqlAvailabilityGroup | Initiates one of the following forms of failover: A forced failover of an availability group (with possible data loss). A manual failover of an availability group. |
Server instance that hosts target secondary replica |
Creating and Managing an Availability Group Listener
Cmdlet | Description | Supported on |
---|---|---|
New-SqlAvailabilityGroupListener | Creates a new availability group listener and attaches it to an existing availability group. | Server instance that hosts primary replica |
Set-SqlAvailabilityGroupListener | Modifies the port setting on an existing availability group listener. | Server instance that hosts primary replica |
Add-SqlAvailabilityGroupListenerStaticIp | Adds a static IP address to an existing availability group listener configuration. The IP address can be an IPv4 address with subnet, or an IPv6 address. | Server instance that hosts primary replica |
Creating and Managing an Availability Replica
Cmdlets | Description | Supported on |
---|---|---|
New-SqlAvailabilityReplica | Creates a new availability replica. You can Use the -AsTemplate parameter to create an in-memory availability-replica object for each new availability replica. | Server instance that hosts primary replica |
Join-SqlAvailabilityGroup | Joins a secondary replica to the availability group. | Server instance that hosts secondary replica |
Remove-SqlAvailabilityReplica | Deletes an availability replica. | Server instance that hosts primary replica |
Set-SqlAvailabilityReplica | Sets the properties of an availability replica. | Server instance that hosts primary replica |
Adding and Managing an Availability Database
Cmdlets | Description | Supported on |
---|---|---|
Add-SqlAvailabilityDatabase | On the primary replica, adds a database to an availability group. On a secondary replica, joins a secondary database to an availability group. |
Any server instance that hosts an availability replica (behavior differs for primary and secondary replicas) |
Remove-SqlAvailabilityDatabase | On the primary replica, removes the database from the availability group. On a secondary replica, removes the local secondary database from the local secondary replica. |
Any server instance that hosts an availability replica (behavior differs for primary and secondary replicas) |
Resume-SqlAvailabilityDatabase | Resumes the data movement for a suspended availability database. | The server instance on which the database was suspended. |
Suspend-SqlAvailabilityDatabase | Suspends the data movement for an availability database. | Any server instance that hosts an availability replica. |
Monitoring Availability Group Health
The following SQL Server cmdlets enable you to monitor the health of an availability group and its replicas and databases.
Important
You must have CONNECT, VIEW SERVER STATE, and VIEW ANY DEFINITION permissions to execute these cmdlets.
Cmdlet | Description | Supported on |
---|---|---|
Test-SqlAvailabilityGroup | Assesses the health of an availability group by evaluating SQL Server policy based management (PBM) policies. | Any server instance that hosts an availability replica.* |
Test-SqlAvailabilityReplica | Assesses the health of availability replicas by evaluating SQL Server policy based management (PBM) policies. | Any server instance that hosts an availability replica.* |
Test-SqlDatabaseReplicaState | Assesses the health of an availability database on all joined availability replicas by evaluating SQL Server policy based management (PBM) policies. | Any server instance that hosts an availability replica.* |
*To view information about all of the availability replicas in an availability group, use to the server instance that hosts the primary replica.
For more information, see Use Always On Policies to View the Health of an Availability Group (SQL Server).
See Also
Overview of Always On Availability Groups (SQL Server)
Get Help SQL Server PowerShell