-
Notifications
You must be signed in to change notification settings - Fork 225
/
Copy pathDSC_SqlScriptQuery.config.ps1
167 lines (145 loc) · 4.85 KB
/
DSC_SqlScriptQuery.config.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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#region HEADER
# Integration Test Config Template Version: 1.2.0
#endregion
$configFile = [System.IO.Path]::ChangeExtension($MyInvocation.MyCommand.Path, 'json')
if (Test-Path -Path $configFile)
{
<#
Allows reading the configuration data from a JSON file,
for real testing scenarios outside of the CI.
#>
$ConfigurationData = Get-Content -Path $configFile | ConvertFrom-Json
}
else
{
$ConfigurationData = @{
AllNodes = @(
@{
NodeName = 'localhost'
Admin_UserName = "$env:COMPUTERNAME\SqlAdmin"
Admin_Password = 'P@ssw0rd1'
SqlLogin_UserName = "DscAdmin1"
SqlLogin_Password = 'P@ssw0rd1'
ServerName = $env:COMPUTERNAME
InstanceName = 'DSCSQLTEST'
Database1Name = 'ScriptDatabase3'
Database2Name = 'ScriptDatabase4'
Database3Name = '$(DatabaseName)'
GetQuery = @'
SELECT Name FROM sys.databases WHERE Name = '$(DatabaseName)' FOR JSON AUTO
'@
TestQuery = @'
if (select count(name) from sys.databases where name = '$(DatabaseName)') = 0
BEGIN
RAISERROR ('Did not find database [$(DatabaseName)]', 16, 1)
END
ELSE
BEGIN
PRINT 'Found database [$(DatabaseName)]'
END
'@
SetQuery = @'
CREATE DATABASE [$(DatabaseName)]
'@
CertificateFile = $env:DscPublicCertificatePath
}
)
}
}
<#
.SYNOPSIS
Runs the SQL query as a Windows User.
#>
Configuration DSC_SqlScriptQuery_RunSqlScriptQueryAsWindowsUser_Config
{
Import-DscResource -ModuleName 'SqlServerDsc'
node $AllNodes.NodeName
{
SqlScriptQuery 'Integration_Test'
{
ServerName = $Node.ServerName
InstanceName = $Node.InstanceName
GetQuery = $Node.GetQuery
TestQuery = $Node.TestQuery
SetQuery = $Node.SetQuery
QueryTimeout = 30
Variable = @(
('DatabaseName={0}' -f $Node.Database1Name)
)
PsDscRunAsCredential = New-Object `
-TypeName System.Management.Automation.PSCredential `
-ArgumentList @($Node.Admin_Username, (ConvertTo-SecureString -String $Node.Admin_Password -AsPlainText -Force))
}
}
}
<#
.SYNOPSIS
Runs the SQL query as a SQL login.
#>
Configuration DSC_SqlScriptQuery_RunSqlScriptQueryAsSqlUser_Config
{
Import-DscResource -ModuleName 'SqlServerDsc'
node $AllNodes.NodeName
{
SqlScriptQuery 'Integration_Test'
{
ServerName = $Node.ServerName
InstanceName = $Node.InstanceName
GetQuery = $Node.GetQuery
TestQuery = $Node.TestQuery
SetQuery = $Node.SetQuery
QueryTimeout = 30
Variable = @(
('DatabaseName={0}' -f $Node.Database2Name)
)
Credential = New-Object `
-TypeName System.Management.Automation.PSCredential `
-ArgumentList @($Node.SqlLogin_Username, (ConvertTo-SecureString -String $Node.SqlLogin_Password -AsPlainText -Force))
}
}
}
<#
.SYNOPSIS
Runs the SQL query with variables disabled.
#>
Configuration DSC_SqlScriptQuery_RunSqlScriptQueryWithVariablesDisabled_Config
{
Import-DscResource -ModuleName 'SqlServerDsc'
node $AllNodes.NodeName
{
SqlScriptQuery 'Integration_Test'
{
ServerName = $Node.ServerName
InstanceName = $Node.InstanceName
GetQuery = $Node.GetQuery
TestQuery = $Node.TestQuery
SetQuery = $Node.SetQuery
DisableVariables = $true
QueryTimeout = 30
Credential = New-Object `
-TypeName System.Management.Automation.PSCredential `
-ArgumentList @($Node.SqlLogin_Username, (ConvertTo-SecureString -String $Node.SqlLogin_Password -AsPlainText -Force))
}
}
}
<#
.SYNOPSIS
Remove Database3
#>
Configuration DSC_SqlScriptQuery_RemoveDatabase3_Config
{
Import-DscResource -ModuleName 'SqlServerDsc'
node $AllNodes.NodeName
{
SqlDatabase 'RemoveDatabase3'
{
Ensure = 'Absent'
ServerName = $Node.ServerName
InstanceName = $Node.InstanceName
Name = $Node.Database3Name
PsDscRunAsCredential = New-Object `
-TypeName System.Management.Automation.PSCredential `
-ArgumentList @($Node.Admin_UserName, (ConvertTo-SecureString -String $Node.Admin_Password -AsPlainText -Force))
}
}
}