Explorar una única base de datos SQL
Veremos varios métodos para implementar un singleton de Azure SQL Database.
Implementación mediante el portal
El proceso para crear una base de datos singleton mediante Azure Portal es sencillo. En el portal, en el menú de navegación izquierdo, seleccione “bases de datos SQL”. En el cuadro de diálogo deslizante resultante, haga clic en “Crear”:
En la hoja de la imagen siguiente, observará que la suscripción ya debe haberse proporcionado. Necesitará tener a mano la siguiente información:
- Grupo de recursos: si hay un grupo de recursos que quiere usar, puede seleccionarlo en la lista desplegable. Puede hacer clic en la opción “Crear nuevo” si quiere crear un nuevo grupo de recursos para Azure SQL Database.
- Nombre de la base de datos: debe proporcionar un nombre de base de datos.
- Servidor – cada base de datos debe residir en un servidor lógico. Si ya existe uno en la región adecuada, puede optar por usarlo. De lo contrario, puede hacer clic en Crear nuevo y seguir las indicaciones para crear un nuevo servidor lógico para alojar la base de datos.
- ¿Quiere usar un grupo elástico de SQL? Determinar si se va a usar un grupo elástico.
- Proceso y almacenamiento: determine los recursos de proceso adecuados necesarios. De forma predeterminada, será de 2 núcleos virtuales, quinta generación (Gen5), con 32 GB de almacenamiento, hasta que se seleccione otra opción. Haga clic en Configurar base de datos para ver las opciones de configuración alternativas.
En la imagen siguiente se muestra la hoja del portal en la que puede configurar las opciones de la base de datos. Aquí observará que el nivel de servicio es De uso general y que el nivel de proceso es Aprovisionado. Aprovisionado implica que los recursos de proceso se asignan previamente y se facturan por hora según el número de núcleos virtuales configurados. La otra opción es Sin servidor, que se explicó anteriormente. Sin servidor se factura por segundo según el número de núcleos virtuales que se usen.
Implementación de Azure SQL Database mediante PowerShell o CLI
También puede implementar la base de datos mediante Azure PowerShell o la CLI de Azure. En la imagen siguiente se muestra el ejemplo de PowerShell en el que se crea un grupo de recursos y se define un administrador denominado SqlAdmin y, posteriormente, se crea un servidor, una base de datos y una regla de firewall.
# 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"
También se puede usar la CLI de Azure para implementar Azure SQL Database, como se muestra a continuación:
#!/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
Implementación de Azure SQL Database con plantillas de Azure Resource Manager
Otro método para implementar recursos es mediante una plantilla de Azure Resource Manager, tal como se mencionó anteriormente. Una plantilla de Resource Manager ofrece el control más pormenorizado sobre los recursos y Microsoft proporciona un repositorio de GitHub llamado “Azure-Quickstart-Templates”, que hospeda plantillas de Azure Resource Manager a las que puede hacer referencia en sus implementaciones. A continuación se muestra un ejemplo de PowerShell de implementación de una plantilla basada en GitHub:
#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 ..."