了解单一 SQL 数据库
我们将了解部署单一 Azure SQL 数据库的几种方法。
通过门户部署
通过 Azure 门户创建单一数据库的过程很简单。 在门户的左侧导航菜单上,选择“SQL 数据库”。 在生成的滑出对话框中,单击“创建”:
在下图中的边栏选项卡中,你会注意到应该已经为你提供了订阅。 需要提供以下信息:
- 资源组 - 如果希望使用现有资源组,可以从下拉列表中选择它。 如果希望为此 Azure SQL 数据库创建新的资源组,可单击“新建”选项。
- 数据库名称 - 必须提供数据库名称。
- 服务器 - 每个数据库必须位于逻辑服务器上。 如果在适当的区域已经存在一个服务器,则可选择使用该服务器。 如果不存在,可单击“新建”链接并按照提示新建一个逻辑服务器来托管数据库。
- 是否要使用 SQL 弹性池? - 确定是否使用弹性池。
- 计算 + 存储 - 确定所需的适当计算资源。 默认情况下,它将是一个 Gen5,2vCore,具有 32 GB 的存储空间,直到其他内容被选中。 单击“配置数据库”可查看备用配置选项。
下图显示了可在其中配置数据库选项的门户边栏选项卡。 在这里,你将注意到服务层级是常规用途,计算层是“已预配”。 “已预配”意味着计算资源根据配置的 vCore 数量已预分配并按小时计费。 另一个选项是“无服务器”,之前已讨论过。 无服务器根据所使用的 vCore 数量按秒计费。
通过 PowerShell/CLI 部署 Azure SQL 数据库
你还可以使用 Azure PowerShell 或 Azure CLI 部署数据库。 下图显示了 PowerShell 示例,在该示例中,你要创建一个新的资源组,并定义一个名为 SqlAdmin 的管理员,然后创建新的服务器、数据库和防火墙规则。
# Connect-AzAccount
# The SubscriptionId in which to create these objects
$SubscriptionId = ''
# Set the resource group name and location for your server
$resourceGroupName = "myResourceGroup-$(Get-Random)"
$location = "westus2"
# Set an admin login and password for your server
$adminSqlLogin = "SqlAdmin"
$password = "ChangeYourAdminPassword1"
# Set server name - the logical server name has to be unique in the system
$serverName = "server-$(Get-Random)"
# The sample database name
$databaseName = "mySampleDatabase"
# The ip address range that you want to allow to access your server
$startIp = "0.0.0.0"
$endIp = "0.0.0.0"
# Set subscription
Set-AzContext -SubscriptionId $subscriptionId
# Create a resource group
$resourceGroup = New-AzResourceGroup -Name $resourceGroupName -Location $location
# Create a server with a system wide unique server name
$server = New-AzSqlServer -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-Location $location `
-SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
# Create a server firewall rule that allows access from the specified IP range
$serverFirewallRule = New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-FirewallRuleName "AllowedIPs" -StartIpAddress $startIp -EndIpAddress $endIp
# Create a blank database with an S0 performance level
$database = New-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-RequestedServiceObjectiveName "S0" `
-SampleName "AdventureWorksLT"
Azure CLI 还可用于部署 Azure SQL 数据库,如下所示:
#!/bin/bash
# set execution context (if necessary)
az account set --subscription <replace with your subscription name or id>
# Set the resource group name and location for your server
resourceGroupName=myResourceGroup-$RANDOM
location=westus2
# Set an admin login and password for your database
adminlogin=ServerAdmin
password=`openssl rand -base64 16`
# password=<EnterYourComplexPasswordHere1>
# The logical server name has to be unique in all of Azure
servername=server-$RANDOM
# The ip address range that you want to allow to access your DB
startip=0.0.0.0
endip=0.0.0.0
# Create a resource group
az group create \
--name $resourceGroupName \
--location $location
# Create a logical server in the resource group
az sql server create \
--name $servername \
--resource-group $resourceGroupName \
--location $location \
--admin-user $adminlogin \
--admin-password $password
# Configure a firewall rule for the server
az sql server firewall-rule create \
--resource-group $resourceGroupName \
--server $servername \
-n AllowYourIp \
--start-ip-address $startip \
--end-ip-address $endip
# Create a database in the server
az sql db create \
--resource-group $resourceGroupName \
--server $servername
--name mySampleDatabase \
--sample-name AdventureWorksLT \
--edition GeneralPurpose \
--family Gen4 \
--capacity 1 \
# Echo random password
echo $password
使用 Azure 资源管理器模板部署 Azure SQL 数据库
如前文所述,部署资源的另一种方法是使用 Azure 资源管理器模板。 资源管理器模板为你提供了对资源的最精细控制,而 Microsoft 提供了一个名为“Azure-Quickstart-Templates”的 GitHub 存储库,该存储库托管 Azure 资源管理器模板,你可以在部署中引用它们。 部署基于 GitHub 的模板的 PowerShell 示例如下所示:
#Define Variables for parameters to pass to template
$projectName = Read-Host -Prompt "Enter a project name"
$location = Read-Host -Prompt "Enter an Azure location (i.e. centralus)"
$adminUser = Read-Host -Prompt "Enter the SQL server administrator username"
$adminPassword = Read-Host -Prompt "Enter the SQl server administrator password" -AsSecureString
$resourceGroupName = "${projectName}rg"
#Create Resource Group and Deploy Template to Resource Group
New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName `
-TemplateUri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-sql-logical-server/azuredeploy.json" `
-administratorLogin $adminUser -administratorLoginPassword $adminPassword
Read-Host -Prompt "Press [ENTER] to continue ..."