@@ -56,7 +56,9 @@ def run_sql_query(host, opts = {}, &block)
56
56
$Env:Path +=\" ;C:\\ Program Files\\ Microsoft SQL Server\\ Client SDK\\ ODBC\\ 110\\ Tools\\ Binn;C:\\ Program Files\\ Microsoft SQL Server\\ 110\\ Tools\\ Binn\\ "
57
57
$Env:Path +=\" ;C:\\ Program Files\\ Microsoft SQL Server\\ Client SDK\\ ODBC\\ 120\\ Tools\\ Binn;C:\\ Program Files\\ Microsoft SQL Server\\ 120\\ Tools\\ Binn\\ "
58
58
$Env:Path +=\" ;C:\\ Program Files\\ Microsoft SQL Server\\ Client SDK\\ ODBC\\ 130\\ Tools\\ Binn;C:\\ Program Files\\ Microsoft SQL Server\\ 130\\ Tools\\ Binn\\ "
59
+ $Env:Path +=\" ;C:\\ Program Files\\ Microsoft SQL Server\\ Client SDK\\ ODBC\\ 140\\ Tools\\ Binn;C:\\ Program Files\\ Microsoft SQL Server\\ 140\\ Tools\\ Binn\\ "
59
60
$Env:Path +=\" ;C:\\ Program Files\\ Microsoft SQL Server\\ Client SDK\\ ODBC\\ 150\\ Tools\\ Binn;C:\\ Program Files\\ Microsoft SQL Server\\ 150\\ Tools\\ Binn\\ "
61
+ $Env:Path +=\" ;C:\\ Program Files\\ Microsoft SQL Server\\ Client SDK\\ ODBC\\ 170\\ Tools\\ Binn;C:\\ Program Files\\ Microsoft SQL Server\\ 170\\ Tools\\ Binn\\ "
60
62
sqlcmd.exe -S #{ server } \\ #{ instance } -U #{ sql_admin_user } -P #{ sql_admin_pass } -Q \" #{ query } \"
61
63
EOS
62
64
# sqlcmd has problem authenticate to sqlserver if the instance is the default one MSSQLSERVER
@@ -104,6 +106,12 @@ def base_install(sql_version)
104
106
:file => SQL_2016_ISO ,
105
107
:drive_letter => 'H'
106
108
}
109
+ when 2017
110
+ iso_opts = {
111
+ :folder => QA_RESOURCE_ROOT ,
112
+ :file => SQL_2017_ISO ,
113
+ :drive_letter => 'H'
114
+ }
107
115
when 2019
108
116
iso_opts = {
109
117
:folder => QA_RESOURCE_ROOT ,
@@ -153,12 +161,17 @@ def remove_sql_instances(host, opts = {})
153
161
end
154
162
155
163
def get_install_paths ( version )
156
- vers = { '2012' => '110' , '2014' => '120' , '2016' => '130' , '2019' => '150' }
164
+ vers = { '2012' => '110' , '2014' => '120' , '2016' => '130' , '2017' => '140' , ' 2019' => '150' }
157
165
158
166
raise 'Valid version must be specified' if ! vers . keys . include? ( version )
159
167
160
168
dir = "%ProgramFiles%\\ Microsoft SQL Server\\ #{ vers [ version ] } \\ Setup Bootstrap"
161
- [ dir , "#{ dir } \\ SQLServer#{ version } " ]
169
+ sql_directory = "SQL"
170
+ if version != "2017"
171
+ sql_directory = sql_directory + "Server"
172
+ end
173
+
174
+ [ dir , "#{ dir } \\ #{ sql_directory } #{ version } " ]
162
175
end
163
176
164
177
def install_pe_license ( host )
@@ -179,3 +192,29 @@ def install_pe_license(host)
179
192
180
193
create_remote_file ( host , '/etc/puppetlabs/license.key' , license )
181
194
end
195
+
196
+ def ensure_sql_browser_started ( host , inst_name )
197
+ powershell = <<-EOS
198
+ $instance_name = '#{ inst_name } '
199
+ $serviceName = "MSSQL`$" + $instance_name
200
+
201
+ Get-Service -Name sqlbrowser | Set-Service -StartupType Automatic -PassThru | Start-Service -PassThru
202
+
203
+ [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement")
204
+ $smo = 'Microsoft.SqlServer.Management.Smo.'
205
+ $wmi = new-object ($smo + 'Wmi.ManagedComputer')
206
+ $uri = "ManagedComputer[@Name='$env:computername']/ ServerInstance[@Name='$instance_name']/ServerProtocol[@Name='Tcp']"
207
+ $Tcp = $wmi.GetSmoObject($uri)
208
+ $Tcp.IsEnabled = $true
209
+ $Tcp.Alter()
210
+
211
+ $Tcp = $wmi.GetSmoObject($uri)
212
+ $Tcp
213
+
214
+ Restart-Service $serviceName -PassThru -Force | FT -AutoSize
215
+ EOS
216
+
217
+ create_remote_file ( host , "inst_setup.ps1" , powershell )
218
+
219
+ on ( host , "powershell -NonInteractive -NoLogo -File \" C:\\ cygwin64\\ home\\ Administrator\\ inst_setup.ps1\" " )
220
+ end
0 commit comments