@@ -219,7 +219,7 @@ function Test-RestoreManagedDatabase
219
219
$targetManagedDatabaseName = Get-ManagedDatabaseName
220
220
$pointInTime = (Get-date ).AddMinutes(5 )
221
221
222
- # Wait for 450 seconds for restore to be ready
222
+ # Once database is created, backup service will automaticly take log backups every 5 minutes. We are waiting 450s to ensure backups are taken to which we can restore.
223
223
Wait-Seconds 450
224
224
225
225
# restore managed database to the same instance
@@ -239,6 +239,94 @@ function Test-RestoreManagedDatabase
239
239
finally
240
240
{
241
241
Remove-ResourceGroupForTest $rg
242
+ Remove-ResourceGroupForTest $rg2
243
+ }
244
+ }
245
+
246
+ <#
247
+ . SYNOPSIS
248
+ Tests restoring a managed database
249
+ #>
250
+ function Test-RestoreDeletedManagedDatabase
251
+ {
252
+ # Setup
253
+ $rg = Create- ResourceGroupForTest
254
+ $rg2 = Create- ResourceGroupForTest
255
+ $vnetName = " cl_initial"
256
+ $subnetName = " Cool"
257
+
258
+ # Setup VNET
259
+ $virtualNetwork1 = CreateAndGetVirtualNetworkForManagedInstance $vnetName $subnetName $rg.Location
260
+ $subnetId = $virtualNetwork1.Subnets.where ({ $_.Name -eq $subnetName })[0 ].Id
261
+
262
+ $managedInstance = Create- ManagedInstanceForTest $rg $subnetId
263
+ $managedInstance2 = Create- ManagedInstanceForTest $rg2 $subnetId
264
+
265
+ try
266
+ {
267
+ # Create with all values
268
+ $managedDatabaseName = Get-ManagedDatabaseName
269
+ $collation = " SQL_Latin1_General_CP1_CI_AS"
270
+ $job1 = New-AzSqlInstanceDatabase - ResourceGroupName $rg.ResourceGroupName - InstanceName $managedInstance.ManagedInstanceName - Name $managedDatabaseName - Collation $collation - AsJob
271
+ $job1 | Wait-Job
272
+ $db = $job1.Output
273
+
274
+ Assert-AreEqual $db.Name $managedDatabaseName
275
+
276
+ $targetManagedDatabaseName1 = Get-ManagedDatabaseName
277
+ $targetManagedDatabaseName2 = Get-ManagedDatabaseName
278
+ $targetManagedDatabaseName3 = Get-ManagedDatabaseName
279
+ $targetManagedDatabaseName4 = Get-ManagedDatabaseName
280
+ $targetManagedDatabaseName5 = Get-ManagedDatabaseName
281
+
282
+ # Once database is created, backup service will automatically take log backups every 5 minutes. We are waiting 450s to ensure backups are taken to which we can restore.
283
+ Wait-Seconds 450
284
+
285
+ # Test remove using all parameters
286
+ Remove-AzSqlInstanceDatabase - ResourceGroupName $rg.ResourceGroupName - InstanceName $managedInstance.ManagedInstanceName - Name $managedDatabaseName - Force
287
+
288
+ # Get deleted database
289
+ $deletedDatabases = Get-AzSqlDeletedInstanceDatabaseBackup - ResourceGroupName $rg.ResourceGroupName - InstanceName $managedInstance.ManagedInstanceName - DatabaseName $managedDatabaseName
290
+
291
+ # restore managed database to the same instance
292
+ $restoredDb1 = Restore-AzSqlInstanceDatabase - FromPointInTimeBackup - ResourceGroupName $rg.ResourceGroupName - InstanceName $managedInstance.ManagedInstanceName - Name $managedDatabaseName - DeletionDate $deletedDatabases [0 ].DeletionDate - PointInTime $deletedDatabases [0 ].EarliestRestorePoint - TargetInstanceDatabaseName $targetManagedDatabaseName1
293
+ Assert-NotNull $restoredDb1
294
+ Assert-AreEqual $restoredDb1.Name $targetManagedDatabaseName1
295
+ Assert-AreEqual $restoredDb1.ResourceGroupName $rg.ResourceGroupName
296
+ Assert-AreEqual $restoredDb1.ManagedInstanceName $managedInstance.ManagedInstanceName
297
+
298
+ # restore managed database to the another instance, different resource group and managed instance
299
+ $restoredDb2 = Restore-AzSqlInstanceDatabase - FromPointInTimeBackup - ResourceGroupName $rg.ResourceGroupName - InstanceName $managedInstance.ManagedInstanceName - Name $managedDatabaseName - DeletionDate $deletedDatabases [0 ].DeletionDate - PointInTime $deletedDatabases [0 ].EarliestRestorePoint - TargetInstanceDatabaseName $targetManagedDatabaseName2 - TargetInstanceName $managedInstance2.ManagedInstanceName - TargetResourceGroupName $rg2.ResourceGroupName
300
+ Assert-NotNull $restoredDb2
301
+ Assert-AreEqual $restoredDb2.Name $targetManagedDatabaseName2
302
+ Assert-AreEqual $restoredDb2.ResourceGroupName $rg2.ResourceGroupName
303
+ Assert-AreEqual $restoredDb2.ManagedInstanceName $managedInstance2.ManagedInstanceName
304
+
305
+ # restore managed database to the same instance using InputObject
306
+ $restoredDb3 = Restore-AzSqlInstanceDatabase - FromPointInTimeBackup - InputObject $deletedDatabases [0 ] - PointInTime $deletedDatabases [0 ].EarliestRestorePoint - TargetInstanceDatabaseName $targetManagedDatabaseName3
307
+ Assert-NotNull $restoredDb3
308
+ Assert-AreEqual $restoredDb3.Name $targetManagedDatabaseName3
309
+ Assert-AreEqual $restoredDb3.ResourceGroupName $rg.ResourceGroupName
310
+ Assert-AreEqual $restoredDb3.ManagedInstanceName $managedInstance.ManagedInstanceName
311
+
312
+ # restore managed database to the same instance using ResourceId
313
+ $restoredDb4 = Restore-AzSqlInstanceDatabase - FromPointInTimeBackup - ResourceId $deletedDatabases [0 ].Id - PointInTime $deletedDatabases [0 ].EarliestRestorePoint - TargetInstanceDatabaseName $targetManagedDatabaseName4
314
+ Assert-NotNull $restoredDb4
315
+ Assert-AreEqual $restoredDb4.Name $targetManagedDatabaseName4
316
+ Assert-AreEqual $restoredDb4.ResourceGroupName $rg.ResourceGroupName
317
+ Assert-AreEqual $restoredDb4.ManagedInstanceName $managedInstance.ManagedInstanceName .
318
+
319
+ # restore managed database to the same instance using Piping
320
+ $restoredDb5 = $deletedDatabases [0 ] | Restore-AzSqlInstanceDatabase - FromPointInTimeBackup - PointInTime $deletedDatabases [0 ].EarliestRestorePoint - TargetInstanceDatabaseName $targetManagedDatabaseName5
321
+ Assert-NotNull $restoredDb5
322
+ Assert-AreEqual $restoredDb5.Name $targetManagedDatabaseName5
323
+ Assert-AreEqual $restoredDb5.ResourceGroupName $rg.ResourceGroupName
324
+ Assert-AreEqual $restoredDb5.ManagedInstanceName $managedInstance.ManagedInstanceName
325
+ }
326
+ finally
327
+ {
328
+ Remove-ResourceGroupForTest $rg
329
+ Remove-ResourceGroupForTest $rg2
242
330
}
243
331
}
244
332
@@ -287,7 +375,7 @@ function Test-GeoRestoreManagedDatabase
287
375
288
376
Assert-NotNull $sourceDbGeoBackup
289
377
290
- $targetManagedDatabaseName1 = Get-ManagedDatabaseName
378
+ $targetManagedDatabaseName1 = Get-ManagedDatabaseName
291
379
$targetManagedDatabaseName2 = Get-ManagedDatabaseName
292
380
$targetManagedDatabaseName3 = Get-ManagedDatabaseName
293
381
$targetManagedDatabaseName4 = Get-ManagedDatabaseName
@@ -323,7 +411,7 @@ function Test-GeoRestoreManagedDatabase
323
411
}
324
412
finally
325
413
{
326
- $restoredDb1 | Remove-AzSqlInstanceDatabase - Force
414
+ $restoredDb1 | Remove-AzSqlInstanceDatabase - Force
327
415
$restoredDb2 | Remove-AzSqlInstanceDatabase - Force
328
416
$restoredDb3 | Remove-AzSqlInstanceDatabase - Force
329
417
$restoredDb4 | Remove-AzSqlInstanceDatabase - Force
0 commit comments