Deploy Azure SQL Database with AZ PowerShell Module (Part 1)
Hi All,
Finally i have some time to do a Project i've always wanted to do.
In a Series of Blog Article i will create a SQL Server / SQL Database in Azure and compare diffrent Deployment Methods.
Let's start with the PowerShell AZ Module
Install-Module AZ
The Script can also be found on my GitHub Repo
###############################################################################
# Demo01-SQLDB-Az.ps1
# Create SQL Server / Firewall Rule / SQL Database with AZ.* Powershell Modules
# 05.04.2022 - Initial Version - Andres Bohren
###############################################################################
###############################################################################
# Connect AzAccount
###############################################################################
Connect-AzAccount
###############################################################################
# Set Subscription
###############################################################################
Set-AzContext [SubscriptionID/SubscriptionName]
###############################################################################
# Create Resource Group
# https://docs.microsoft.com/en-us/powershell/module/az.resources/new-azresourcegroup?view=azps-7.4.0
###############################################################################
$ResourceGroup = "RG_Demo01"
$Location = "westeurope"
New-AzResourceGroup -Name $ResourceGroup -Location $Location
###############################################################################
# Create SQL Server Object
# https://docs.microsoft.com/en-us/powershell/module/az.sql/new-azsqlserver?view=azps-7.3.2
###############################################################################
$Credential = Get-Credential
$SQLServerName = "icewolfsqldemo01"
$MinimalTLSVersion = "1.2"
New-AzSqlServer -ResourceGroupName $ResourceGroup -Location $Location -ServerName $SQLServerName -SqlAdministratorCredentials $Credential -MinimalTlsVersion $MinimalTLSVersion
#Get SQLServer
Get-AzSqlServer -ResourceGroupName $ResourceGroup | Format-List ResourceId, ServerName, FullyQualifiedDomainName, SqlAdministratorLogin, ResourceGroupName
###############################################################################
# Create SQL Server FirewallRule
# https://docs.microsoft.com/en-us/powershell/module/az.sql/new-azsqlserverfirewallrule?view=azps-7.3.2
###############################################################################
#Allow Azure
New-AzSqlServerFirewallRule -ResourceGroupName $ResourceGroup -ServerName $SQLServerName -AllowAllAzureIPs
#Add Corporate Public IP
$RuleName = "IcewolfPublicIP"
$StartIpAddress = "95.143.60.18"
$EndIpAddress = "95.143.60.18"
New-AzSqlServerFirewallRule -ResourceGroupName $ResourceGroup -ServerName $SQLServerName -FirewallRuleName $RuleName -StartIpAddress $StartIpAddress -EndIpAddress $EndIpAddress
#Get Firewall Rules
Get-AzSqlServerFirewallRule -ResourceGroupName $ResourceGroup -ServerName $SQLServerName
# Demo01-SQLDB-Az.ps1
# Create SQL Server / Firewall Rule / SQL Database with AZ.* Powershell Modules
# 05.04.2022 - Initial Version - Andres Bohren
###############################################################################
###############################################################################
# Connect AzAccount
###############################################################################
Connect-AzAccount
###############################################################################
# Set Subscription
###############################################################################
Set-AzContext [SubscriptionID/SubscriptionName]
###############################################################################
# Create Resource Group
# https://docs.microsoft.com/en-us/powershell/module/az.resources/new-azresourcegroup?view=azps-7.4.0
###############################################################################
$ResourceGroup = "RG_Demo01"
$Location = "westeurope"
New-AzResourceGroup -Name $ResourceGroup -Location $Location
###############################################################################
# Create SQL Server Object
# https://docs.microsoft.com/en-us/powershell/module/az.sql/new-azsqlserver?view=azps-7.3.2
###############################################################################
$Credential = Get-Credential
$SQLServerName = "icewolfsqldemo01"
$MinimalTLSVersion = "1.2"
New-AzSqlServer -ResourceGroupName $ResourceGroup -Location $Location -ServerName $SQLServerName -SqlAdministratorCredentials $Credential -MinimalTlsVersion $MinimalTLSVersion
#Get SQLServer
Get-AzSqlServer -ResourceGroupName $ResourceGroup | Format-List ResourceId, ServerName, FullyQualifiedDomainName, SqlAdministratorLogin, ResourceGroupName
###############################################################################
# Create SQL Server FirewallRule
# https://docs.microsoft.com/en-us/powershell/module/az.sql/new-azsqlserverfirewallrule?view=azps-7.3.2
###############################################################################
#Allow Azure
New-AzSqlServerFirewallRule -ResourceGroupName $ResourceGroup -ServerName $SQLServerName -AllowAllAzureIPs
#Add Corporate Public IP
$RuleName = "IcewolfPublicIP"
$StartIpAddress = "95.143.60.18"
$EndIpAddress = "95.143.60.18"
New-AzSqlServerFirewallRule -ResourceGroupName $ResourceGroup -ServerName $SQLServerName -FirewallRuleName $RuleName -StartIpAddress $StartIpAddress -EndIpAddress $EndIpAddress
#Get Firewall Rules
Get-AzSqlServerFirewallRule -ResourceGroupName $ResourceGroup -ServerName $SQLServerName

As you can see the SQL Server has been created in the right Resourcegroup.
All the Settings like MinimumTLSVersion and Firewall Rules are set

Now we create the SQL Database
###############################################################################
# Create SQL Database
# https://docs.microsoft.com/en-us/powershell/module/az.sql/new-azsqldatabase?view=azps-7.3.2
###############################################################################
$DatabaseName = "db_demo01"
$Edition = "Basic"
New-AzSqlDatabase -ResourceGroupName $ResourceGroup -ServerName $SQLServerName -DatabaseName $DatabaseName -Edition $Edition
# Create SQL Database
# https://docs.microsoft.com/en-us/powershell/module/az.sql/new-azsqldatabase?view=azps-7.3.2
###############################################################################
$DatabaseName = "db_demo01"
$Edition = "Basic"
New-AzSqlDatabase -ResourceGroupName $ResourceGroup -ServerName $SQLServerName -DatabaseName $DatabaseName -Edition $Edition

The Database has been created with the correct SKU

Finally we need to clean up and delete the Demo Resource Group
###############################################################################
# Remove-AzResourceGroup
# https://docs.microsoft.com/en-us/powershell/module/az.resources/remove-azresourcegroup?view=azps-7.4.0
###############################################################################
$ResourceGroup = "RG_Demo01"
Remove-AzResourceGroup -Name $ResourceGroup -Force
# Remove-AzResourceGroup
# https://docs.microsoft.com/en-us/powershell/module/az.resources/remove-azresourcegroup?view=azps-7.4.0
###############################################################################
$ResourceGroup = "RG_Demo01"
Remove-AzResourceGroup -Name $ResourceGroup -Force

Regards
Andres Bohren
