forked from dsccommunity/SqlServerDsc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
xSQLServerEndpointState.ps1
95 lines (79 loc) · 2.66 KB
/
xSQLServerEndpointState.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
$ConfigData = @{
AllNodes = @(
@{
NodeName= "*"
CertificateFile = "C:\Certificates\dsc-public.cer"
Thumbprint = "D6F57B6BE46A7162138687FB74DBAA1D4EB1A59B"
SqlInstanceName = "MSSQLSERVER"
PSDscAllowDomainUser = $true
},
@{
NodeName = 'SQLNODE01.company.local'
Role = "PrimaryReplica"
},
@{
NodeName = 'SQLNODE02.company.local'
Role = "SecondaryReplica"
}
)
}
Configuration SQLAlwaysOnNodeConfig
{
param
(
[Parameter(Mandatory=$false)]
[ValidateNotNullorEmpty()]
[PsCredential] $SqlAdministratorCredential
)
Import-DscResource -ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName xSqlServer
Node $AllNodes.Where{$_.Role -eq "PrimaryReplica" }.NodeName
{
# Start the endpoint
xSQLServerEndpointState StartAlwaysOnEndpoint
{
NodeName = $Node.NodeName
InstanceName = $Node.SqlInstanceName
Name = "DefaultMirrorEndpoint"
State = "Started"
PsDscRunAsCredential = $SqlAdministratorCredential
}
# Stop the endpoint
xSQLServerEndpointState StopAlwaysOnEndpoint
{
NodeName = $Node.NodeName
InstanceName = $Node.SqlInstanceName
Name = "DefaultMirrorEndpoint"
State = "Stopped"
PsDscRunAsCredential = $SqlAdministratorCredential
DependsOn = "[xSQLServerEndpointState]StartAlwaysOnEndpoint"
}
}
Node $AllNodes.Where{ $_.Role -eq "SecondaryReplica" }.NodeName
{
# Start the endpoint
xSQLServerEndpointState StartAlwaysOnEndpoint
{
NodeName = $Node.NodeName
InstanceName = $Node.SqlInstanceName
Name = "DefaultMirrorEndpoint"
State = "Started"
PsDscRunAsCredential = $SqlAdministratorCredential
}
# Stop the endpoint
xSQLServerEndpointState StopAlwaysOnEndpoint
{
NodeName = $Node.NodeName
InstanceName = $Node.SqlInstanceName
Name = "DefaultMirrorEndpoint"
State = "Stopped"
PsDscRunAsCredential = $SqlAdministratorCredential
DependsOn = "[xSQLServerEndpointState]StartAlwaysOnEndpoint"
}
}
}
$SqlAdministratorCredential = Get-Credential -Message "Enter credentials for SQL Server administrator account"
SQLAlwaysOnNodeConfig `
-SqlAdministratorCredential $SqlAdministratorCredential `
-ConfigurationData $ConfigData `
-OutputPath 'C:\Configuration'