Azure SQL Database の作成と構成
Azure SQL データベースは、コードを使用するか、Azure portal を使用して手動で作成できます。 さらに、データベース作成を自動化された継続的インテグレーション (CI) プロセスに統合できます。 この方法は、一貫性を維持するのに役立ちます。データベースを作成するコードを書けば、毎回常にまったく同じ仕様が生成されるからです。
コードを使用して Azure SQL データベースを作成する場合、主な 4 つの手順があります。
- リソース グループを作成する
- SQL サーバーの作成
- ファイアウォール規則の構成
- データベースの作成
リソース グループを作成する
Azure 内のすべてのリソースは、リソース グループ内に作成されます。 コードを使用してリソース グループを作成する場合、ポータルでデータベースを作成する場合と同じ可視性が得られません。 自動デプロイにリソース グループの作成を含める必要がある場合は、ランダム化された名前の使用を検討してください。 この方法は、テナント内の既存のリソース グループ名との重複を防ぐのに役立ちます。
Note
$RANDOM は、0 - 32767 の範囲の整数の擬似乱数を返す Bash関数です。 これは、PowerShell の Get-Random によって返される範囲よりも狭い範囲です。 一意性を確保するために、2 つの $RANDOM の結果を乗算できます。
コードを使用してリソース グループを作成する方法の詳細については、「Azure CLI を使用した Azure リソース グループの管理」または「Azure PowerShell を使用して Azure リソース グループを管理する」を参照してください。
SQL サーバーの作成
SQL サーバーを作成するときは、サーバー名も一意である必要があり、管理者ユーザーを、強力なパスワードを使用して作成する必要があります。
この例では、Azure CLI を使用して SQL サーバーを作成しています。
serverName="svr-$randomId"
adminUser="azureadmin"
adminPassword="pw-$randomId"
az sql server create --name $serverName --resource-group $resourceGroup --location $location \
--admin-user $adminUser --admin-password $adminPassword
この例では、PowerShell を使用して SQL サーバーを作成しています。
$serverName = "svr-$randomId"
$adminUser = "azureadmin"
$adminPassword = "pw-$randomId"
$credentials = New-Object -TypeName System.Management.Automation.PSCredential `
-ArgumentList $adminUser, $(ConvertTo-SecureString -String $adminPassword -AsPlainText -Force)
$server = New-AzSqlServer -ServerName $serverName -ResourceGroupName $resourceGroup `
-Location $location -SqlAdministratorCredentials $credentials
$server
ファイアウォール規則の構成
ファイアウォール規則では、サーバーへのアクセスを許可または拒否するトラフィックを指定します。
この例では、Azure CLI を使用してファイアウォール規則を追加しています。
startIpAddress="0.0.0.0"
endIpAddress="0.0.0.0"
firewallRuleName="AllowedIPRange"
az sql server firewall-rule create --server $serverName \
--resource-group $resourceGroup \
--name $firewallRuleName --start-ip-address $startIpAddress --end-ip-address $endIpAddress
この例では、PowerShell を使用してファイアウォール規則を追加しています。
$startIpAddress = "0.0.0.0"
$endIpAddress = "0.0.0.0"
$firewallRuleName = "AllowedIPRange"
$serverFirewallRule = New-AzSqlServerFirewallRule -ServerName $serverName `
-ResourceGroupName $resourceGroup `
-FirewallRuleName $firewallRuleName -StartIpAddress $startIpAddress -EndIpAddress $endIpAddress
$serverFirewallRule
データベースの作成
これで、作成したサーバーに Azure SQL データベースを作成する準備ができました。 このコード例では、サンプル データベースである AdventureWorksLT を作成します。 空のデータベースを作成する場合は、データベース名を変更し、--sample-name パラメーターを含む行を削除します。
次のコード スニペットでは、Azure CLI を使用して AdventureWorksLT データベースを作成しています。
az sql db create --name AdventureWorksLT
\ --resource-group $resourceGroup --server $serverName
\ --sample-name AdventureWorksLT
\ --edition GeneralPurpose --compute-model serverless --family Gen5 --capacity 2
次のコード スニペットでは、PowerShell を使用して AdventureWorksLT データベースを作成しています。
New-AzSqlDatabase -DatabaseName AdventureWorksLT `
-ResourceGroupName $resourceGroup -ServerName $serverName `
-SampleName AdventureWorksLT `
-Edition GeneralPurpose -ComputeModel Serverless -ComputeGeneration Gen5 -VCore 2
このコード スニペットは、1 つの特定のサービス レベルとコンピューティング レベルの Azure SQL データベースを作成する方法を示しています。 使用可能なサービス レベルとコンピューティング レベルの詳細については、サービス レベルに関するページを参照してください。
データベースのクエリを実行する
リソース グループとサーバーが Azure に既に作成されている場合は、T-SQL を使用して Azure SQL データベースを作成できます。 T-SQL では、Azure リソースを作成する機能は提供されません。
ただし、Azure portal のクエリ エディターを使用して Azure SQL ダッシュボードに移動し、既存のデータベースに対してクエリを実行できます。
開始するには、Azure portal にサインインし、データベースに移動します。 左側のナビゲーション ウィンドウから、[クエリ エディター] を選択します。 次に、SQL 管理者の資格情報でサインインします。 サインインしたら、AdventureWorksLT データベースに対して次の T-SQL クエリを実行します。
SELECT TOP 10 C.Name AS Category, SUM(S.OrderQty * S.UnitPrice) AS SalesValue
FROM [SalesLT].[ProductCategory] AS C
INNER JOIN [SalesLT].[Product] AS P
ON C.ProductCategoryID = P.ProductCategoryID
INNER JOIN [SalesLT].[SalesOrderDetail] AS S
ON P.ProductID = S.ProductID
GROUP BY C.Name
ORDER BY SalesValue DESC;
使用可能な Azure SQL Database デプロイ モデルの詳細については、「Azure SQL Database とは」を参照してください。