@@ -23,7 +23,7 @@ function Test-ManagedLiveDatabaseShortTermRetentionPolicy
23
23
$vnetName = " cl_initial"
24
24
$subnetName = " Cool"
25
25
26
- # Setup VNET
26
+ # Setup VNET
27
27
$virtualNetwork1 = CreateAndGetVirtualNetworkForManagedInstance $vnetName $subnetName $rg.Location
28
28
$subnetId = $virtualNetwork1.Subnets.where ({ $_.Name -eq $subnetName })[0 ].Id
29
29
@@ -88,14 +88,18 @@ function Test-ManagedLiveDatabaseShortTermRetentionPolicy
88
88
}
89
89
}
90
90
91
+ <#
92
+ . SYNOPSIS
93
+ Test LTR Policy functions for MI
94
+ #>
91
95
function Test-ManagedDeletedDatabaseShortTermRetentionPolicy
92
96
{
93
97
# Setup
94
98
$rg = Create- ResourceGroupForTest
95
99
$vnetName = " cl_initial"
96
100
$subnetName = " Cool"
97
101
98
- # Setup VNET
102
+ # Setup VNET
99
103
$virtualNetwork1 = CreateAndGetVirtualNetworkForManagedInstance $vnetName $subnetName $rg.Location
100
104
$subnetId = $virtualNetwork1.Subnets.where ({ $_.Name -eq $subnetName })[0 ].Id
101
105
@@ -130,7 +134,7 @@ function Test-ManagedDeletedDatabaseShortTermRetentionPolicy
130
134
Remove-AzSqlInstanceDatabase - ResourceGroupName $rg.ResourceGroupName - InstanceName $managedInstance.ManagedInstanceName - Name $managedDatabaseName - Force
131
135
132
136
# Get deleted database
133
- $deletedDatabases = Get-AzSqlDeletedInstanceDatabaseBackup - ResourceGroupName $rg.ResourceGroupName - InstanceName $managedInstance.ManagedInstanceName - DatabaseName $managedDatabaseName
137
+ $deletedDatabases = Get-AzSqlDeletedInstanceDatabaseBackup - ResourceGroupName $rg.ResourceGroupName - InstanceName $managedInstance.ManagedInstanceName - DatabaseName $managedDatabaseName
134
138
135
139
# Set retention to 29, test default parameter providing.
136
140
$retention = 29
@@ -173,4 +177,143 @@ function Test-ManagedDeletedDatabaseShortTermRetentionPolicy
173
177
{
174
178
Remove-ResourceGroupForTest $rg
175
179
}
176
- }
180
+ }
181
+ <#
182
+ . SYNOPSIS
183
+ Test long term retention for managed databases.
184
+ #>
185
+ function Test-ManagedInstanceLongTermRetentionPolicy ()
186
+ {
187
+ # Setup
188
+ $resourceGroupName = " cl_stage_sea_cv"
189
+ $managedInstanceName = " seageodr-gen5-gp"
190
+ $weeklyRetention = " P1W"
191
+ $zeroRetention = " PT0S"
192
+
193
+ try
194
+ {
195
+ # create test database
196
+ $databaseName = " ps-ltr-policy-test-1"
197
+ $database = New-AzSqlInstanceDatabase - ResourceGroupName $resourceGroupName - InstanceName $managedInstanceName - Name $databaseName
198
+
199
+ Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy - ResourceGroupName $resourceGroupName - InstanceName $managedInstanceName - DatabaseName $databaseName - WeeklyRetention $weeklyRetention
200
+ $policy = Get-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy - ResourceGroup $resourceGroupName - InstanceName $managedInstanceName - DatabaseName $databaseName
201
+ Assert-AreEqual $policy.WeeklyRetention $weeklyRetention
202
+ Assert-AreEqual $policy.MonthlyRetention $zeroRetention
203
+ Assert-AreEqual $policy.YearlyRetention $zeroRetention
204
+ }
205
+ finally
206
+ {
207
+ Remove-ResourceGroupForTest $resourceGroup
208
+ }
209
+ }
210
+
211
+ <#
212
+ . SYNOPSIS
213
+ Test long term retention backup commands for managed databases.
214
+ #>
215
+ function Test-ManagedInstanceLongTermRetentionBackup
216
+ {
217
+
218
+ # MANUAL INSTRUCTIONS
219
+ # Create a server and database and fill in the appropriate information below
220
+ # Set the weekly retention on the database so that the first backup gets picked up, for example:
221
+ # Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy -ResourceGroup $resourceGroup -ServerName $serverName -DatabaseName $databaseName -WeeklyRetention P1W
222
+ # Wait about 18 hours until it gets properly copied and you see the backup when run get backups, for example:
223
+ # Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -InstanceName $managedInstanceName -DatabaeName $databaseName
224
+ $resourceGroup = " cl_stage_sea_cv"
225
+ $locationName = " southeastasia"
226
+ $managedInstanceName = " seageodr-gen5-gp"
227
+ $databaseName = " ps-test-1"
228
+ $databaseWithRemovableBackup = " ps-test-2" ;
229
+
230
+ # Basic Get Tests
231
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName
232
+ Assert-AreNotEqual $backups.Count 0
233
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName - InstanceName $managedInstanceName
234
+ Assert-AreNotEqual $backups.Count 0
235
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName - InstanceName $managedInstanceName - DatabaseName $databaseName
236
+ Assert-AreNotEqual $backups.Count 0
237
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName - InstanceName $managedInstanceName - DatabaseName $databaseName - BackupName $backups [0 ].BackupName
238
+ Assert-AreNotEqual $backups.Count 0
239
+
240
+ # Test Get Optional Parameters
241
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName - InstanceName $managedInstanceName - DatabaseName $databaseName - OnlyLatestPerDatabase
242
+ Assert-AreNotEqual $backups.Count 0
243
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName - InstanceName $managedInstanceName - OnlyLatestPerDatabase - DatabaseState All
244
+ Assert-AreNotEqual $backups.Count 0
245
+
246
+ # Test Get Piping with Optional Parameters
247
+ $backups = Get-AzSqlInstanceDatabase - ResourceGroup $resourceGroup - InstanceName $managedInstanceName - Name $databaseName | Get-AzSqlInstanceDatabaseLongTermRetentionBackup - OnlyLatestPerDatabase
248
+ Assert-AreNotEqual $backups.Count 0
249
+
250
+ # Restore Test
251
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName
252
+ $restoredDatabase = " ps-test-restore-2"
253
+ $db = Restore-AzSqlInstanceDatabase - FromLongTermRetentionBackup - ResourceId $backups [0 ].ResourceId - TargetResourceGroupName $resourceGroup - TargetInstanceName $managedInstanceName - TargetInstanceDatabaseName $restoredDatabase
254
+ Assert-AreEqual $db.Name $restoredDatabase
255
+
256
+ # Test Remove Backup
257
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName - InstanceName $managedInstanceName - DatabaseName $databaseWithRemovableBackup
258
+ $initialBackups = $backups.Count
259
+ Remove-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName - InstanceName $managedInstanceName - DatabaseName $databaseWithRemovableBackup - BackupName $backups [0 ].BackupName - Force
260
+ $backups = Get-AzSqlInstanceDatabase - ResourceGroup $resourceGroup - InstanceName $managedInstanceName - Name $databaseWithRemovableBackup | Get-AzSqlInstanceDatabaseLongTermRetentionBackup
261
+ $expectedBackups = $initialBackups - 1
262
+ Assert-AreEqual $expectedBackups $backups.Count
263
+
264
+ # drop the restored db
265
+ Remove-AzSqlInstanceDatabase - ResourceGroupName $resourceGroup - InstanceName $managedInstanceName - Name $restoredDatabase - Force
266
+ }
267
+
268
+ <#
269
+ . SYNOPSIS
270
+ Test long term retention backup commands for managed databases (using resource group).
271
+ #>
272
+ function Test-ManagedInstanceLongTermRetentionResourceGroupBasedBackup
273
+ {
274
+ # MANUAL INSTRUCTIONS
275
+ # Create a server and database and fill in the appropriate information below
276
+ # Set the weekly retention on the database so that the first backup gets picked up, for example:
277
+ # Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy -ResourceGroup $resourceGroup -ServerName $serverName -DatabaseName $databaseName -WeeklyRetention P1W
278
+ # Wait about 18 hours until it gets properly copied and you see the backup when run get backups, for example:
279
+ # Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $locationName -ServerName $serverName -DatabaeName $databaseName -ResourceGroupName $resourceGroup
280
+ $resourceGroup = " cl_stage_sea_cv"
281
+ $locationName = " southeastasia"
282
+ $managedInstanceName = " seageodr-gen5-gp"
283
+ $databaseName = " ps-test-3"
284
+
285
+ # Basic Get Tests
286
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName - ResourceGroupName $resourceGroup
287
+ Assert-AreNotEqual $backups.Count 0
288
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName - InstanceName $managedInstanceName - ResourceGroupName $resourceGroup
289
+ Assert-AreNotEqual $backups.Count 0
290
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName - InstanceName $managedInstanceName - DatabaseName $databaseName - ResourceGroupName $resourceGroup
291
+ Assert-AreNotEqual $backups.Count 0
292
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName - InstanceName $managedInstanceName - DatabaseName $databaseName - BackupName $backups [0 ].BackupName - ResourceGroupName $resourceGroup
293
+ Assert-AreNotEqual $backups.Count 0
294
+
295
+ # Test Get Piping
296
+ $backups = Get-AzSqlInstanceDatabase - ResourceGroup $resourceGroup - InstanceName $managedInstanceName - Name $databaseName | Get-AzSqlInstanceDatabaseLongTermRetentionBackup
297
+ Assert-AreNotEqual $backups.Count 0
298
+ $backups = Get-AzSqlInstanceDatabase - ResourceGroup $resourceGroup - InstanceName $managedInstanceName - Name $databaseName | Get-AzSqlInstanceDatabaseLongTermRetentionBackup - BackupName $backups [0 ].BackupName
299
+ Assert-AreNotEqual $backups.Count 0
300
+
301
+ # Test Get Optional Parameters
302
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName - InstanceName $managedInstanceName - DatabaseName $databaseName - ResourceGroupName $resourceGroup - OnlyLatestPerDatabase
303
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName - InstanceName $managedInstanceName - ResourceGroupName $resourceGroup - DatabaseState All
304
+ Assert-AreNotEqual $backups.Count 0
305
+
306
+ # Test Get Piping with Optional Parameters
307
+ $backups = Get-AzSqlInstanceDatabase - ResourceGroup $resourceGroup - InstanceName $managedInstanceName - Name $databaseName | Get-AzSqlInstanceDatabaseLongTermRetentionBackup - OnlyLatestPerDatabase
308
+ Assert-AreNotEqual $backups.Count 0
309
+
310
+ # Restore Test
311
+ $restoredDatabase = " ps-test-restore-with-rg-2"
312
+ $backups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup - Location $locationName - ResourceGroupName $resourceGroup
313
+ $db = Restore-AzSqlInstanceDatabase - FromLongTermRetentionBackup - ResourceId $backups [0 ].ResourceId - TargetResourceGroupName $resourceGroup - TargetInstanceName $managedInstanceName - TargetInstanceDatabaseName $restoredDatabase
314
+ Assert-AreEqual $db.Name $restoredDatabase
315
+
316
+ # drop the restored db
317
+ Remove-AzSqlInstanceDatabase - ResourceGroupName $resourceGroup - InstanceName $managedInstanceName - Name $restoredDatabase - Force
318
+ }
319
+
0 commit comments