Is there a way to programmatically determine which node in a SQL Server failover cluster is the active node? Or at least determine whether the current machine is the active node?
I have a Windows program which runs on both physical nodes in a failover cluster, but that should operate differently depending on whether it is running on the active node. Part of the reason is that this program should not run simultaneously on the inactive and the active node.
(I've read a bit about making the program cluster aware, but that seems heavily overkill for this simple scenario.)
From SQL Server:
You can also access it through the Microsoft.SqlServer.Management.Smo Namespace as shown here.
You can check like that:
1. Check Availability Group Status:
*Remember to change AvailabilityGroupName
or
2. prevent executing job on secondary:
or
3. check write availability on secondary:
or
4. for SQL2014 and newer: