Skip to content

Commit 1fcc992

Browse files
authored
Merge pull request #2403 from hchungmsft/dev
Cmdlets for Azure RM SQL Long Term Retention Backup/Restore
2 parents 7cfa4ab + 9374e9f commit 1fcc992

24 files changed

+9852
-5931
lines changed

ChangeLog.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
##2016.07.04 version 1.6.0
2+
* Azure SQL DB Backup/Restore
3+
* Cmdlets for LTR (Long Term Retention) backup feature
4+
* Get-AzureRmSqlServerBackupLongTermRetentionVault
5+
* Get-AzureRmSqlDatabaseBackupLongTermRetentionPolicy
6+
* Set-AzureRmSqlServerBackupLongTermRetentionVault
7+
* Set-AzureRmSqlDatabaseBackupLongTermRetentionPolicy
8+
* Restore-AzureRmSqlDatabase now supports point-in-time restore of a deleted database
9+
* Restore-AzureRmSqlDatabase now supports restoring from a Long Term Retention backup
10+
111
##2016.06.01 version 1.5.0
212
* Azure Resource Manager
313
- (Get/Set/New/Remove)-AzureRmResourceGroup cmdlets will now use the new autorest generated ARM assembly
@@ -279,7 +289,7 @@
279289
- New-AzureStorageShareSASToken
280290
- New-AzureStorageQueueSASToken
281291
- New-AzureStorageTableSASToken
282-
* Azure SQL DB Backup/restore
292+
* Azure SQL DB Backup/Restore
283293
* Get-AzureRmSqlDatabaseGeoBackup
284294
* Get-AzureRmSqlDeletedDatabaseBackup
285295
* Restore-AzureRmSqlDatabase

src/ResourceManager/Sql/Commands.Sql.Test/Commands.Sql.Test.csproj

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
</Reference>
7272
<Reference Include="Microsoft.Azure.Management.Sql">
7373
<SpecificVersion>False</SpecificVersion>
74-
<HintPath>..\..\..\packages\Microsoft.Azure.Management.Sql.0.46.0-prerelease\lib\net40\Microsoft.Azure.Management.Sql.dll</HintPath>
74+
<HintPath>..\..\..\packages\Microsoft.Azure.Management.Sql.0.47.0-prerelease\lib\net40\Microsoft.Azure.Management.Sql.dll</HintPath>
7575
</Reference>
7676
<Reference Include="Microsoft.Azure.Management.Storage">
7777
<HintPath>..\..\..\packages\Microsoft.Azure.Management.Storage.2.4.0-preview\lib\net40\Microsoft.Azure.Management.Storage.dll</HintPath>
@@ -231,7 +231,7 @@
231231
<None Include="ScenarioTests\ElasticPoolCrudTests.ps1">
232232
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
233233
</None>
234-
<None Include="ScenarioTests\ImportExportTests.ps1">
234+
<None Include="ScenarioTests\ImportExportTests.ps1">
235235
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
236236
</None>
237237
<Compile Include="ScenarioTests\LocationCapabilitiesTests.cs" />
@@ -248,8 +248,8 @@
248248
<Compile Include="ScenarioTests\SqlTestsBase.cs" />
249249
<Compile Include="ScenarioTests\TransparentDataEncryptionCrudTests.cs" />
250250
<Compile Include="ScenarioTests\IndexRecommendationTests.cs" />
251-
<Compile Include="ScenarioTests\ImportExportTests.cs" />
252-
<Compile Include="UnitTests\AzureSqlDatabaseImportExportTests.cs" />
251+
<Compile Include="ScenarioTests\ImportExportTests.cs" />
252+
<Compile Include="UnitTests\AzureSqlDatabaseImportExportTests.cs" />
253253
<Compile Include="UnitTests\AzureSqlCmdletBaseAttributeTests.cs" />
254254
<Compile Include="UnitTests\AzureSqlDatabaseActivationAttributeTest.cs" />
255255
<Compile Include="UnitTests\AzureSqlDatabaseAttributeTests.cs" />
@@ -431,6 +431,15 @@
431431
<None Include="SessionRecords\Microsoft.Azure.Commands.Sql.Test.ScenarioTests.DatabaseBackupTests\TestRestorePointInTimeBackup.json">
432432
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
433433
</None>
434+
<None Include="SessionRecords\Microsoft.Azure.Commands.Sql.Test.ScenarioTests.DatabaseBackupTests\TestRestoreLongTermRetentionBackup.json">
435+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
436+
</None>
437+
<None Include="SessionRecords\Microsoft.Azure.Commands.Sql.Test.ScenarioTests.DatabaseBackupTests\TestServerBackupLongTermRetentionVault.json">
438+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
439+
</None>
440+
<None Include="SessionRecords\Microsoft.Azure.Commands.Sql.Test.ScenarioTests.DatabaseBackupTests\TestDatabaseBackupLongTermRetentionPolicy.json">
441+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
442+
</None>
434443
<None Include="SessionRecords\Microsoft.Azure.Commands.Sql.Test.ScenarioTests.DatabaseCrudTests\TestDatabaseCreate.json">
435444
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
436445
</None>
@@ -608,7 +617,7 @@
608617
<None Include="Templates\sql-ddm-test-env-setup.json">
609618
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
610619
</None>
611-
<None Include="SessionRecords\Microsoft.Azure.Commands.Sql.Test.ScenarioTests.ImportExportTests\TestExportDatabase.json">
620+
<None Include="SessionRecords\Microsoft.Azure.Commands.Sql.Test.ScenarioTests.ImportExportTests\TestExportDatabase.json">
612621
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
613622
</None>
614623
<None Include="SessionRecords\Microsoft.Azure.Commands.Sql.Test.ScenarioTests.ImportExportTests\TestImportDatabase.json">

src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DatabaseBackupTests.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,23 @@ public void TestRestorePointInTimeBackup()
5151
{
5252
RunPowerShellTest("Test-RestorePointInTimeBackup");
5353
}
54+
[Fact]
55+
[Trait(Category.AcceptanceType, Category.CheckIn)]
56+
public void TestServerBackupLongTermRetentionVault()
57+
{
58+
RunPowerShellTest("Test-ServerBackupLongTermRetentionVault");
59+
}
60+
[Fact]
61+
[Trait(Category.AcceptanceType, Category.CheckIn)]
62+
public void TestDatabaseBackupLongTermRetentionPolicy()
63+
{
64+
RunPowerShellTest("Test-DatabaseBackupLongTermRetentionPolicy");
65+
}
66+
[Fact]
67+
[Trait(Category.AcceptanceType, Category.CheckIn)]
68+
public void TestRestoreLongTermRetentionBackup()
69+
{
70+
RunPowerShellTest("Test-RestoreLongTermRetentionBackup");
71+
}
5472
}
5573
}

src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DatabaseBackupTests.ps1

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,49 @@ function Test-RestorePointInTimeBackup
9191
$restoredDbName = "powershell_db_restored"
9292

9393
Get-AzureRmSqlDatabase -ResourceGroupName $rg.ResourceGroupName -ServerName $server.ServerName -DatabaseName $db.DatabaseName | Restore-AzureRmSqlDatabase -FromPointInTimeBackup -PointInTime "2016-02-20T00:06:00Z" -TargetDatabaseName $restoredDbName
94+
}
95+
96+
function Test-ServerBackupLongTermRetentionVault
97+
{
98+
$location = "North Europe"
99+
$serverVersion = "12.0"
100+
$rg = Get-AzureRmResourceGroup -ResourceGroupName hchung
101+
$server = Get-AzureRmSqlServer -ServerName hchung-testsvr -ResourceGroupName $rg.ResourceGroupName
102+
$vaultResourceId = "/subscriptions/e5e8af86-2d93-4ebd-8eb5-3b0184daa9de/resourceGroups/hchung/providers/Microsoft.RecoveryServices/vaults/hchung-testvault"
103+
104+
# set
105+
Set-AzureRmSqlServerBackupLongTermRetentionVault -ServerName $server.ServerName -ResourceGroupName $rg.ResourceGroupName -ResourceId $vaultResourceId
106+
# get
107+
$result = Get-AzureRmSqlServerBackupLongTermRetentionVault -ServerName $server.ServerName -ResourceGroupName $rg.ResourceGroupName
108+
#verify
109+
Assert-True { $result.RecoveryServicesVaultResourceId -eq $vaultResourceId }
110+
}
111+
112+
function Test-DatabaseBackupLongTermRetentionPolicy
113+
{
114+
$location = "North Europe"
115+
$serverVersion = "12.0"
116+
$rg = Get-AzureRmResourceGroup -ResourceGroupName hchung
117+
$server = Get-AzureRmSqlServer -ServerName hchung-testsvr -ResourceGroupName $rg.ResourceGroupName
118+
$db = Get-AzureRmSqlDatabase -ServerName $server.ServerName -DatabaseName hchung-testdb -ResourceGroupName $rg.ResourceGroupName
119+
$policyResourceId = "/subscriptions/e5e8af86-2d93-4ebd-8eb5-3b0184daa9de/resourceGroups/hchung/providers/Microsoft.RecoveryServices/vaults/hchung-testvault/backupPolicies/hchung-testpolicy"
120+
121+
# set
122+
Set-AzureRmSqlDatabaseBackupLongTermRetentionPolicy -ServerName $server.ServerName -ResourceGroupName $rg.ResourceGroupName -DatabaseName $db.DatabaseName -State "Enabled" -ResourceId $policyResourceId
123+
# get
124+
$result = Get-AzureRmSqlDatabaseBackupLongTermRetentionPolicy -ServerName $server.ServerName -ResourceGroupName $rg.ResourceGroupName -DatabaseName $db.DatabaseName
125+
#verify
126+
Assert-True { $result.RecoveryServicesBackupPolicyResourceId -eq $policyResourceId }
127+
}
128+
129+
function Test-RestoreLongTermRetentionBackup
130+
{
131+
$location = "North Europe"
132+
$serverVersion = "12.0"
133+
$rg = Get-AzureRmResourceGroup -ResourceGroupName hchung
134+
$server = Get-AzureRmSqlServer -ServerName hchung-testsvr -ResourceGroupName $rg.ResourceGroupName
135+
$restoredDbName = "powershell_db_restored_ltr"
136+
$recoveryPointResourceId = "/subscriptions/e5e8af86-2d93-4ebd-8eb5-3b0184daa9de/resourceGroups/hchung/providers/Microsoft.RecoveryServices/vaults/hchung-testvault/backupFabrics/Azure/protectionContainers/AzureSqlContainer;Sql;hchung;hchung-testsvr/protectedItems/AzureSqlDb;dsName;hchung-testdb;fbf5641f-77f8-43b7-8fd7-5338ec293213/recoveryPoints/1731556986347"
137+
138+
Restore-AzureRmSqlDatabase -FromLongTermRetentionBackup -ResourceId $recoveryPointResourceId -TargetDatabaseName $restoredDbName -ResourceGroupName $rg.ResourceGroupName -ServerName $server.ServerName
94139
}

0 commit comments

Comments
 (0)