Skip to content

Commit c5a9139

Browse files
emgu-msmsJinLei
andauthored
Add ZoneRedundant parameter to New-AzSqlDatabaseCopy, New-AzSqlDatabaseSecondary and Restore-AzSqlDatabase (Azure#16547)
* Add ZoneRedundant parameter to New-AzSqlDatabaseCopy, New-AzSqlDatabaseSecondary and Restore-AzSqlDatabase * Update ChangeLog.md Co-authored-by: Jin Lei <[email protected]>
1 parent 068ae3a commit c5a9139

21 files changed

+41297
-18
lines changed

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,5 +192,19 @@ public void TestShortTermRetentionPolicy()
192192
RunPowerShellTest("Test-ShortTermRetentionPolicy");
193193
}
194194
}
195+
196+
[Fact]
197+
[Trait(Category.AcceptanceType, Category.CheckIn)]
198+
public void TestCreateRestoreRegularAndZoneRedundantDatabaseWithSourceNotZoneRedundant()
199+
{
200+
RunPowerShellTest("Test-CreateRestoreRegularAndZoneRedundantDatabaseWithSourceNotZoneRedundant");
201+
}
202+
203+
[Fact]
204+
[Trait(Category.AcceptanceType, Category.CheckIn)]
205+
public void TestCreateRestoreRegularAndZoneRedundantDatabaseWithSourceZoneRedundant()
206+
{
207+
RunPowerShellTest("Test-CreateRestoreRegularAndZoneRedundantDatabaseWithSourceZoneRedundant");
208+
}
195209
}
196210
}

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

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,4 +580,140 @@ function Test-UpdateLongTermRetentionBackup
580580

581581
# Update-AzSqlDatabaseLongTermRetentionBackup returns after target BSR is set
582582
Assert-AreEqual "Local" $backupAfterSet.BackupStorageRedundancy
583+
}
584+
585+
<#
586+
.SYNOPSIS
587+
Tests restoring a vldb with source zone redundant == false
588+
1. Restore source vldb passing in zone redundant == true and backup storage redundancy == Zone,
589+
Verify restored vldb has zone redundant == true and backup storage redundancy == Zone
590+
2. Restore source vldb with no parameters passed in,
591+
Verify restored vldb has zone redundant == false and backup storage redundancy == Geo
592+
#>
593+
function Test-CreateRestoreRegularAndZoneRedundantDatabaseWithSourceNotZoneRedundant()
594+
{
595+
# Setup
596+
$location = Get-Location "Microsoft.Sql" "operations" "East US 2 EUAP"
597+
$rg = Create-ResourceGroupForTest $location
598+
$server = Create-ServerForTest $rg $location
599+
$sourceNonZRDatabaseName = Get-DatabaseName + "-non-zr"
600+
601+
$restoreTrueZRParamDatabaseName = $sourceNonZRDatabaseName + "-source-non-zr-restore-zr-true"
602+
$restoreNoZRParamDatabaseName = $sourceNonZRDatabaseName + "-source-non-zr-restore-no-zr-param"
603+
604+
try
605+
{
606+
# Create source vldb
607+
$sourceNonZRDatabase = New-AzSqlDatabase -ResourceGroupName $rg.ResourceGroupName -ServerName $server.ServerName -DatabaseName $sourceNonZRDatabaseName `
608+
-VCore 2 -ComputeGeneration Gen5 -Edition Hyperscale -LicenseType "LicenseIncluded"
609+
610+
# Verify created source vldb has correct values (specifically zone redundancy == false and backup storage redundancy == Geo)
611+
Assert-AreEqual $sourceNonZRDatabase.ServerName $server.ServerName
612+
Assert-AreEqual $sourceNonZRDatabase.DatabaseName $sourceNonZRDatabaseName
613+
Assert-AreEqual $sourceNonZRDatabase.Edition "Hyperscale"
614+
Assert-AreEqual $sourceNonZRDatabase.CurrentBackupStorageRedundancy "Geo"
615+
Assert-NotNull $sourceNonZRDatabase.ZoneRedundant
616+
Assert-False { $sourceNonZRDatabase.ZoneRedundant }
617+
618+
# Get current time for PITR
619+
$time = Get-Date
620+
$utcTime = $Time.ToUniversalTime()
621+
$pitrTime = $utcTime.ToString("yyyy-MM-ddTHH:mm:ssZ")
622+
623+
# Restore source vldb with zone redundancy == true and backup storage redundancy == Zone
624+
$restoreTrueZRParamDatabase = Restore-AzSqlDatabase -FromPointInTimeBackup -PointInTime $pitrTime -TargetDatabaseName $restoreTrueZRParamDatabaseName -ResourceGroupName $rg.ResourceGroupName `
625+
-ServerName $server.ServerName -ResourceId $sourceNonZRDatabase.ResourceId -VCore 2 -ComputeGeneration Gen5 -Edition Hyperscale -BackupStorageRedundancy "Zone" -ZoneRedundant
626+
627+
# Verify restored vldb has correct values (specifically zone redundancy == true and backup storage redundancy == Zone)
628+
Assert-AreEqual $restoreTrueZRParamDatabase.ServerName $server.ServerName
629+
Assert-AreEqual $restoreTrueZRParamDatabase.DatabaseName $restoreTrueZRParamDatabaseName
630+
Assert-AreEqual $restoreTrueZRParamDatabase.Edition "Hyperscale"
631+
Assert-AreEqual $restoreTrueZRParamDatabase.CurrentBackupStorageRedundancy "Zone"
632+
Assert-NotNull $restoreTrueZRParamDatabase.ZoneRedundant
633+
Assert-True { $restoreTrueZRParamDatabase.ZoneRedundant }
634+
635+
# Restore source vldb with no parameters passed in
636+
$restoreNoZRParamDatabase = Restore-AzSqlDatabase -FromPointInTimeBackup -PointInTime $pitrTime -TargetDatabaseName $restoreNoZRParamDatabaseName -ResourceGroupName $rg.ResourceGroupName `
637+
-ServerName $server.ServerName -ResourceId $sourceNonZRDatabase.ResourceId
638+
639+
# Verify restored vldb has correct values (specifically zone redundancy == false and backup storage redundancy == Geo)
640+
Assert-AreEqual $restoreNoZRParamDatabase.ServerName $server.ServerName
641+
Assert-AreEqual $restoreNoZRParamDatabase.DatabaseName $restoreNoZRParamDatabaseName
642+
Assert-AreEqual $restoreNoZRParamDatabase.Edition "Hyperscale"
643+
Assert-AreEqual $restoreNoZRParamDatabase.CurrentBackupStorageRedundancy "Geo"
644+
Assert-NotNull $restoreNoZRParamDatabase.ZoneRedundant
645+
Assert-False { $restoreNoZRParamDatabase.ZoneRedundant }
646+
}
647+
finally
648+
{
649+
Remove-ResourceGroupForTest $rg
650+
}
651+
}
652+
653+
<#
654+
.SYNOPSIS
655+
Tests restoring a vldb with source zone redundant == true and backup storage redundancy == Zone
656+
1. Restore source vldb passing in zone redundant == false and backup storage redundancy == Zone,
657+
Verify restored vldb has zone redundant == false and backup storage redundancy == Zone
658+
2. Restore source vldb with no parameters passed in,
659+
Verify restored vldb has zone redundant == true and backup storage redundancy == Zone
660+
#>
661+
function Test-CreateRestoreRegularAndZoneRedundantDatabaseWithSourceZoneRedundant()
662+
{
663+
# Setup
664+
$location = Get-Location "Microsoft.Sql" "operations" "East US 2 EUAP"
665+
$rg = Create-ResourceGroupForTest $location
666+
$server = Create-ServerForTest $rg $location
667+
$sourceZRDatabaseName = Get-DatabaseName + "-zr"
668+
669+
$restoreFalseZRParamDatabaseName = $sourceZRDatabaseName + "-source-zr-restore-zr-false"
670+
$restoreNoZRParamDatabaseName = $sourceZRDatabaseName + "-source-zr-restore-no-zr-param"
671+
672+
try
673+
{
674+
# Create source vldb with zone redundancy == true and backup storage redundancy == Zone
675+
$sourceZRDatabase = New-AzSqlDatabase -ResourceGroupName $rg.ResourceGroupName -ServerName $server.ServerName -DatabaseName $sourceZRDatabaseName `
676+
-VCore 2 -ComputeGeneration Gen5 -Edition Hyperscale -LicenseType "LicenseIncluded" -BackupStorageRedundancy "Zone" -ZoneRedundant
677+
678+
# Verify created source vldb has correct values (specifically zone redundancy == true and backup storage redundancy == Zone)
679+
Assert-AreEqual $sourceZRDatabase.ServerName $server.ServerName
680+
Assert-AreEqual $sourceZRDatabase.DatabaseName $sourceZRDatabaseName
681+
Assert-AreEqual $sourceZRDatabase.Edition "Hyperscale"
682+
Assert-AreEqual $sourceZRDatabase.CurrentBackupStorageRedundancy "Zone"
683+
Assert-NotNull $sourceZRDatabase.ZoneRedundant
684+
Assert-True { $sourceZRDatabase.ZoneRedundant }
685+
686+
# Get current time for PITR
687+
$time = Get-Date
688+
$utcTime = $Time.ToUniversalTime()
689+
$pitrTime = $utcTime.ToString("yyyy-MM-ddTHH:mm:ssZ")
690+
691+
# Copy source vldb with zone redundancy == false
692+
$restoreFalseZRParamDatabase = Restore-AzSqlDatabase -FromPointInTimeBackup -PointInTime $pitrTime -TargetDatabaseName $restoreFalseZRParamDatabaseName -ResourceGroupName $rg.ResourceGroupName `
693+
-ServerName $server.ServerName -ResourceId $sourceZRDatabase.ResourceId -VCore 2 -ComputeGeneration Gen5 -Edition Hyperscale -ZoneRedundant:$false
694+
695+
# Verify restored vldb has correct values (specifically zone redundancy == false and backup storage redundancy == Zone)
696+
Assert-AreEqual $restoreFalseZRParamDatabase.ServerName $server.ServerName
697+
Assert-AreEqual $restoreFalseZRParamDatabase.DatabaseName $restoreFalseZRParamDatabaseName
698+
Assert-AreEqual $restoreFalseZRParamDatabase.Edition "Hyperscale"
699+
Assert-AreEqual $restoreFalseZRParamDatabase.CurrentBackupStorageRedundancy "Zone"
700+
Assert-NotNull $restoreFalseZRParamDatabase.ZoneRedundant
701+
Assert-False { $restoreFalseZRParamDatabase.ZoneRedundant }
702+
703+
# Restore source vldb with no parameters passed in
704+
$restoreNoZRParamDatabase = Restore-AzSqlDatabase -FromPointInTimeBackup -PointInTime $pitrTime -TargetDatabaseName $restoreNoZRParamDatabaseName -ResourceGroupName $rg.ResourceGroupName `
705+
-ServerName $server.ServerName -ResourceId $sourceZRDatabase.ResourceId
706+
707+
# Verify restored vldb has correct values (specifically zone redundancy == true and backup storage redundancy == Zone)
708+
Assert-AreEqual $restoreNoZRParamDatabase.ServerName $server.ServerName
709+
Assert-AreEqual $restoreNoZRParamDatabase.DatabaseName $restoreNoZRParamDatabaseName
710+
Assert-AreEqual $restoreNoZRParamDatabase.Edition "Hyperscale"
711+
Assert-AreEqual $restoreNoZRParamDatabase.CurrentBackupStorageRedundancy "Zone"
712+
Assert-NotNull $restoreNoZRParamDatabase.ZoneRedundant
713+
Assert-True { $restoreNoZRParamDatabase.ZoneRedundant }
714+
}
715+
finally
716+
{
717+
Remove-ResourceGroupForTest $rg
718+
}
583719
}

src/Sql/Sql.Test/ScenarioTests/DatabaseReplicationTests.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,5 +97,33 @@ public void TestCreateSecondaryDatabaseWithBackupStorageRedundancy()
9797
{
9898
RunPowerShellTest("Test-CreateSecondaryDatabaseWithBackupStorageRedundancy");
9999
}
100+
101+
[Fact]
102+
[Trait(Category.AcceptanceType, Category.CheckIn)]
103+
public void TestCreateCopyRegularAndZoneRedundantDatabaseWithSourceNotZoneRedundant()
104+
{
105+
RunPowerShellTest("Test-CreateCopyRegularAndZoneRedundantDatabaseWithSourceNotZoneRedundant");
106+
}
107+
108+
[Fact]
109+
[Trait(Category.AcceptanceType, Category.CheckIn)]
110+
public void TestCreateCopyRegularAndZoneRedundantDatabaseWithSourceZoneRedundant()
111+
{
112+
RunPowerShellTest("Test-CreateCopyRegularAndZoneRedundantDatabaseWithSourceZoneRedundant");
113+
}
114+
115+
[Fact]
116+
[Trait(Category.AcceptanceType, Category.CheckIn)]
117+
public void TestCreateSecondaryRegularAndZoneRedundantDatabaseWithSourceNotZoneRedundant()
118+
{
119+
RunPowerShellTest("Test-CreateSecondaryRegularAndZoneRedundantDatabaseWithSourceNotZoneRedundant");
120+
}
121+
122+
[Fact]
123+
[Trait(Category.AcceptanceType, Category.CheckIn)]
124+
public void TestCreateSecondaryRegularAndZoneRedundantDatabaseWithSourceZoneRedundant()
125+
{
126+
RunPowerShellTest("Test-CreateSecondaryRegularAndZoneRedundantDatabaseWithSourceZoneRedundant");
127+
}
100128
}
101129
}

0 commit comments

Comments
 (0)