1
0
mirror of https://github.com/alex-bochkov/ssms-addin.git synced 2026-06-15 16:57:06 +02:00

Create dbo.fn_ag_is_primary.sql

This commit is contained in:
Alexey Bochkov
2018-03-08 10:54:51 -08:00
committed by GitHub
parent 2dbd366928
commit ba521b9fbb
+46
View File
@@ -0,0 +1,46 @@
USE master;
GO
CREATE OR ALTER FUNCTION dbo.fn_ag_is_primary(@AGName sysname NULL)
RETURNS bit
AS
BEGIN
DECLARE @ServerName NVARCHAR(256) = @@SERVERNAME
DECLARE @RoleDesc NVARCHAR(60)
IF @AGName IS NULL
BEGIN
IF (SELECT COUNT(*) FROM sys.availability_groups) > 1
BEGIN
RETURN 0;
END
SELECT @AGName = AG.name FROM sys.availability_replicas AR
INNER JOIN sys.availability_groups AG
ON AR.group_id = AG.group_id
WHERE replica_server_name = @ServerName
END
ELSE
BEGIN
IF NOT EXISTS(SELECT 1 FROM sys.availability_groups WHERE name = @AGName)
BEGIN
RETURN 0;
END
END
SELECT @RoleDesc = a.role_desc
FROM sys.dm_hadr_availability_replica_states AS a
JOIN sys.availability_replicas AS b
ON b.replica_id = a.replica_id
INNER JOIN sys.availability_groups AG
ON a.group_id = AG.group_id
WHERE b.replica_server_name = @ServerName
AND AG.name = @AGName
IF @RoleDesc = 'PRIMARY'
BEGIN
RETURN 1;
END
RETURN 0;
END