@@ -162,10 +162,28 @@ steps:
162162 #Change the access level for FileStream for SQLServer
163163 Set-ExecutionPolicy Unrestricted
164164 Import-Module "sqlps"
165- Invoke-Sqlcmd -ServerInstance "$machineName" @"
166- EXEC sp_configure filestream_access_level, 2;
167- RECONFIGURE;
165+
166+ # Retry loop: SQL Server may be temporarily unavailable after enabling FileStream via WMI.
167+ # Worst-case budget: 10 attempts x (5s connection timeout + 5s sleep) = ~100s
168+ $tries = 0
169+ while ($true) {
170+ $tries++
171+ try {
172+ Invoke-Sqlcmd -ServerInstance "$machineName" -ConnectionTimeout 5 @"
173+ EXEC sp_configure filestream_access_level, 2;
174+ RECONFIGURE;
168175 "@
176+ Write-Host "FileStream access level configured successfully."
177+ break
178+ } catch {
179+ if ($tries -ge 10) {
180+ Write-Host "##[error]Failed to configure FileStream access level after $tries tries."
181+ throw
182+ }
183+ Write-Host "Failed to connect to SQL Server (attempt $tries/10). Retrying in 5 seconds..."
184+ Start-Sleep -Seconds 5
185+ }
186+ }
169187 displayName: 'Enable FileStream [Win]'
170188 env:
171189 SQL_USER: ${{parameters.user }}
@@ -250,6 +268,31 @@ steps:
250268 Restart-Service -Name "$serviceName" -Force
251269 Restart-Service -Name MSSQLSERVER* -Force
252270
271+ # Wait for SQL Server to be ready to accept connections after restart.
272+ # Worst-case budget: 20 attempts x (5s connection timeout + 3s sleep) = ~160s
273+ $machineName = $env:COMPUTERNAME
274+ if ("${{parameters.instanceName }}" -ne "MSSQLSERVER") {
275+ $machineName += "\${{parameters.instanceName }}"
276+ }
277+
278+ Import-Module "sqlps"
279+ $tries = 0
280+ while ($true) {
281+ $tries++
282+ try {
283+ Invoke-Sqlcmd -ServerInstance "$machineName" -Query "SELECT @@VERSION" -ConnectionTimeout 5
284+ Write-Host "SQL Server is ready after restart (attempt $tries)."
285+ break
286+ } catch {
287+ if ($tries -ge 20) {
288+ Write-Host "##[error]SQL Server did not become ready after $tries attempts."
289+ throw
290+ }
291+ Write-Host "Waiting for SQL Server to start (attempt $tries/20)..."
292+ Start-Sleep -Seconds 3
293+ }
294+ }
295+
253296 displayName: 'Restart SQL Server [Win]'
254297
255298 - powershell : |
0 commit comments