Guía para crear una VM con SQL Server con PowerShell
Se aplica a: SQL Server en máquinas virtuales de Azure
En esta guía, se describen las opciones para usar PowerShell con el fin de crear una máquina virtual (VM) de SQL Server en Azure. Para ver un ejemplo simplificado de Azure PowerShell que se basa en valores predeterminados, consulte el inicio rápido para crear una máquina virtual de SQL Server en Azure con PowerShell, o para obtener un script de un extremo a otro, consulte cómo crear una VM con SQL Server con un script de PowerShell.
Requisitos previos
Para completar esta guía, debe tener lo siguiente:
- Suscripción a Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
- La última versión de Azure PowerShell
Nota:
En este artículo se usa el módulo Az de PowerShell, que es el módulo de PowerShell que se recomienda para interactuar con Azure. Para empezar a trabajar con el módulo Az de PowerShell, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Definición de variables
Para poder reutilizar valores y simplificar la creación de scripts, empiece por definir una serie de variables. Cambie los valores de los parámetros como desee, pero tenga en cuenta las restricciones de nomenclatura relacionadas con la longitud de los nombres y los caracteres especiales al modificar los valores que se proporcionan.
Empiece por definir los parámetros que se van a usar en todo el script, como la ubicación, el nombre del grupo de recursos, la imagen de SQL Server y la cuenta de almacenamiento que desea usar, así como las propiedades de red y máquina virtual.
Ubicación y grupo de recursos
Defina la región de datos, el grupo de recursos y la suscripción donde desea crear la máquina virtual con SQL Server y los recursos asociados.
Modifíquelos como desee y, después, ejecute estos cmdlets para inicializar estas variables.
$SubscriptionId = "<Enter Subscription ID>"
$Location = "<Enter Location>"
$ResourceGroupName = "<Enter Resource Group Name>"
$userName = "<Enter User Name for the virtual machine"
Propiedades de almacenamiento
Defina la cuenta de almacenamiento y el tipo de almacenamiento que va a usar la máquina virtual.
Modifíquelos como desee y, después, ejecute el siguiente cmdlet para inicializar estas variables. Se recomienda usar discos SSD Premium para las cargas de trabajo de producción.
$StorageName = "sqlvm" + "storage"
$StorageSku = "Premium_LRS"
Nota:
El nombre de la cuenta de almacenamiento debe tener entre 3 y 24 caracteres y usar solo números y letras minúsculas, por lo que debe asegurarse de que el nombre del grupo de recursos no tenga caracteres especiales, o modifique el nombre de la cuenta de almacenamiento para usar un nombre diferente al de $ResourceGroupName.
Propiedades de red
Defina las propiedades que va a usar la red en la máquina virtual.
- interfaz de red
- Método de asignación de TCP/IP
- Nombre de la red virtual
- Nombre de la subred virtual
- Intervalo de direcciones IP de la red virtual
- Intervalo de direcciones IP de la subred
- Etiqueta de nombre de dominio público
Modifíquelos como desee y, después, ejecute este cmdlet para inicializar estas variables.
$InterfaceName = $ResourceGroupName + "ServerInterface"
$NsgName = $ResourceGroupName + "nsg"
$TCPIPAllocationMethod = "Dynamic"
$VNetName = $ResourceGroupName + "VNet"
$SubnetName = "Default"
$VNetAddressPrefix = "10.0.0.0/16"
$VNetSubnetAddressPrefix = "10.0.0.0/24"
$DomainName = $ResourceGroupName
Propiedades de máquina virtual
Defina las siguientes propiedades:
- Nombre de la máquina virtual
- Nombre del equipo
- Tamaño de la máquina virtual
- Nombre del disco del sistema operativo de la máquina virtual
Modifíquelos como desee y, después, ejecute este cmdlet para inicializar estas variables.
$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"
Elegir una imagen de SQL Server
Es posible implementar una imagen anterior de SQL Server que no esté disponible en Azure Portal mediante PowerShell.
Utilice las siguientes variables para definir la imagen de SQL Server que se va a usar para la máquina virtual.
Enumere todas las ofertas de imágenes de SQL Server con el comandoGet-AzVMImageOffer para enumerar las imágenes disponibles actuales en Azure Portal, así como imágenes anteriores que solo se pueden implementar con PowerShell:
Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'
Nota:
SQL Server 2008 y SQL Server 2008 R2 no tienen soporte extendido y ya no están disponibles en Azure Marketplace.
Enumere las ediciones disponibles de la oferta con Get-AzVMImageSku.
Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
Para este tutorial, use la edición SQL Server 2022 Developer (SQLDEV-GEN2) en Windows Server 2022. La edición Developer tiene licencia gratuita para pruebas y desarrollo, y solo se paga por el costo de ejecutar la máquina virtual:
$OfferName = "SQL2022-WS2022"
$PublisherName = "MicrosoftSQLServer"
$Version = "latest"
$Sku = "SQLDEV-GEN2"
$License = 'PAYG'
# Define a credential object
$SecurePassword = ConvertTo-SecureString '<strong password>' `
-AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)
Crear un grupo de recursos
Abra PowerShell y establezca el acceso a su cuenta de Azure mediante la ejecución del comando Connect-AzAccount y establezca el contexto de la suscripción con Set-AzContext. Cuando se le solicite, escriba las credenciales. Use el mismo correo electrónico y la misma contraseña que usa para iniciar sesión en el portal de Azure.
Después de establecer el contexto de la suscripción, el primer objeto que creará es el grupo de recursos. Use el comando Connect-AzAccount para conectarse a Azure y establezca el contexto de la suscripción con Set-AzContext. Para crear un grupo de recursos de Azure y sus recursos, use el cmdlet New-AzResourceGroup. Especifique las variables que inicializó anteriormente para el nombre del grupo de recursos y la ubicación.
Ejecute este cmdlet para conectarse a Azure, establecer el contexto de la suscripción y crear el nuevo grupo de recursos:
# Set subscription context
Connect-AzAccount
$subscriptionContextParams = @{
SubscriptionId = $SubscriptionId
}
Set-AzContext @subscriptionContextParams
# Create a resource group
$resourceGroupParams = @{
Name = $resourceGroupName
Location = $Location
Tag = @{Owner="SQLDocs-Samples"}
}
$resourceGroup = New-AzResourceGroup @resourceGroupParams
Crear una cuenta de almacenamiento
La máquina virtual requiere recursos de almacenamiento tanto para el disco del sistema operativo como para los archivos de registro y de datos de SQL Server. Por motivos de simplicidad, creará un único disco para ambos. Posteriormente puede conectar discos adicionales y usar el cmdlet Add-Azure Disk para colocar los archivos de registro y de datos de SQL Server en discos dedicados. Use el cmdlet New-AzStorageAccount para crear una cuenta de almacenamiento estándar en el nuevo grupo de recursos. Especifique las variables que inicializó anteriormente para el nombre de la cuenta de almacenamiento, el nombre de la SKU del almacenamiento y la ubicación.
Ejecute este cmdlet para crear una nueva cuenta de almacenamiento:
# Create storage account
$StorageAccount = New-AzStorageAccount -ResourceGroupName $ResourceGroupName `
-Name $StorageName -SkuName $StorageSku `
-Kind "Storage" -Location $Location
Sugerencia
La creación de la cuenta de almacenamiento puede tardar unos minutos.
Crear recursos de red
La máquina virtual requiere un número de recursos de red para la conectividad de red.
- Cada máquina virtual requiere una red virtual.
- Una red virtual debe tener al menos una subred definida.
- Una interfaz de red debe definirse con una dirección IP privada o pública.
Creación de una configuración de subred de una red virtual
Para empezar, cree una configuración de subred para la red virtual. Para este tutorial, cree una subred predeterminada mediante el cmdlet New-AzVirtualNetworkSubnetConfig. Especifique las variables que inicializó anteriormente para el nombre de la subred y el prefijo de la dirección.
Nota:
Con este puede definir propiedades adicionales de la configuración de subred de la red virtual, pero eso está fuera del ámbito de este tutorial.
Ejecute este cmdlet para crear la configuración una de subred virtual.
# Create a subnet configuration
$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix
Creación de una red virtual
A continuación, cree una red virtual en su nuevo grupo de recursos mediante el cmdlet New-AzVirtualNetwork. Especifique las variables que inicializó anteriormente para el nombre, la ubicación y el prefijo de la dirección. Use la configuración de subred que ha definido en el paso anterior.
Ejecute este cmdlet para crear una red virtual:
# Create a virtual network
$VNet = New-AzVirtualNetwork -Name $VNetName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig
Crear la dirección IP pública
Una vez que la red virtual está definida, debe configurar una dirección IP para conectarse a la máquina virtual. Para este tutorial, cree una dirección IP pública mediante el direccionamiento IP dinámico, con el fin de admitir la conectividad a Internet. Use el cmdlet New-AzPublicIpAddress para crear la dirección IP pública en el nuevo grupo de recursos. Especifique las variables que inicializó anteriormente para el nombre, la ubicación, el método de asignación y la etiqueta del nombre de dominio DNS.
Nota:
Con este cmdlet se pueden definir propiedades adicionales de la dirección IP pública, pero eso es algo que está fuera del ámbito de este tutorial inicial. También se puede crear una dirección privada o una dirección con una dirección estática, pero eso está también fuera del ámbito de este tutorial.
Ejecute este cmdlet para crear una dirección IP pública.
# Create a public IP address
$PublicIp = New-AzPublicIpAddress -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName
Creación del grupo de seguridad de red
Para proteger el tráfico de la VM y SQL Server, cree un grupo de seguridad de red.
Cree dos reglas de grupo de seguridad de red mediante New-AzNetworkSecurityRuleConfig, una regla para escritorio remoto (RDP) para permitir conexiones RDP y una regla que permita el tráfico en el puerto TCP 1433. Al hacerlo se habilitan las conexiones a SQL Server a través de Internet.
# Create a network security group rule $NsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp ` -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * ` -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow $NsgRuleSQL = New-AzNetworkSecurityRuleConfig -Name "MSSQLRule" -Protocol Tcp ` -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * ` -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
Cree el grupo de seguridad de red mediante New-AzNetworkSecurityGroup.
# Create a network security group $Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName ` -Location $Location -Name $NsgName ` -SecurityRules $NsgRuleRDP,$NsgRuleSQL
Creación de la interfaz de red
Ya está listo para crear la interfaz de red de la máquina virtual. Use el cmdlet New-AzNetworkInterface para crear la interfaz de red en el nuevo grupo de recursos. Especifique el nombre, la ubicación, la subred y la dirección IP pública definidas anteriormente.
Ejecute este cmdlet para crear una interfaz de red.
# Create a network interface
$Interface = New-AzNetworkInterface -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id `
-NetworkSecurityGroupId $Nsg.Id
Configuración de un objeto de VM
Ahora que los recursos de almacenamiento y de red están definidos, esta listo para definir los recursos de proceso para la máquina virtual.
- Especifique el tamaño de máquina virtual y varias propiedades del sistema operativo.
- Especifique la interfaz de red que ha creado anteriormente.
- Defina el almacenamiento de blobs.
- Especifique el sistema operativo.
Creación de la máquina virtual de SQL Server
Para crear la VM con SQL Server, primero cree un objeto de credencial y, luego, la máquina virtual.
Creación de un objeto de credencial que contenga el nombre y la contraseña de las credenciales de administrador local
Para que pueda establecer las propiedades del sistema operativo de la máquina virtual, debe especificar las credenciales de la cuenta de administrador local en forma de cadena segura. Para ello, use el cmdlet Get-Credential.
Ejecute el siguiente cmdlet. Deberá escribir el nombre y la contraseña del administrador local de la máquina virtual en la ventana de solicitud de credenciales de PowerShell.
# Define a credential object
$SecurePassword = ConvertTo-SecureString '<strong password>' `
-AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)
Definición de propiedades y creación de la máquina virtual
Todo está listo para establecer las propiedades del sistema operativo de la máquina virtual con New-AzVMConfig, cree la máquina virtual con New-AzVM y use cmdlet Add-AzVMNetworkInterface para agregar la interfaz de red mediante la variable que definió anteriormente.
El script de ejemplo hace lo siguiente:
- Requiera la instalación del agente de máquina virtual.
- Especifica que el cmdlet habilita la actualización automática.
- Especifica las variables que inicializó anteriormente para el nombre de la máquina virtual, el nombre del equipo y la credencial.
Ejecute este cmdlet para establecer las propiedades de sistema operativo de la máquina virtual.
# Create a virtual machine configuration
$VMName = $ResourceGroupName + "VM"
$VMConfig = New-AzVMConfig -VMName $VMName -VMSize $VMSize |
Set-AzVMOperatingSystem -Windows -ComputerName $VMName -Credential $Cred -ProvisionVMAgent -EnableAutoUpdate |
Set-AzVMSourceImage -PublisherName $PublisherName -Offer $OfferName -Skus $Sku -Version $Version |
Add-AzVMNetworkInterface -Id $Interface.Id
# Create the VM
New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VMConfig
La máquina virtual se ha creado.
Nota:
Si aparece un error en el diagnóstico de arranque, puede ignorarlo. Se crea una cuenta de almacenamiento estándar para el diagnóstico del arranque, ya que la cuenta de almacenamiento especificada para el disco de la máquina virtual es una cuenta de almacenamiento prémium.
Instalar la extensión de agente de IaaS de SQL
Las máquinas virtuales de SQL Server son compatibles con características de administración automatizada con la extensión del Agente de IaaS de SQL Server. Para registrar el servidor SQL Server con la extensión, ejecute el comando New-AzSqlVM después de crear la máquina virtual. Especifique el tipo de licencia de la VM con SQL Server, eligiendo entre pago por uso (PAYG
), traiga su propia licencia a través de la Ventaja híbrida de Azure (AHUB
), recuperación ante desastres (DR
) para activar la licencia de réplica de recuperación ante desastres gratuita. Para más información acerca de las licencias, consulte Modelo de licencia.
Para registrar la VM con SQL Server con la extensión de agente de IaaS de SQL, primero registre la suscripción con el proveedor de recursos mediante Register-AzResourceProvider y, luego, registre la VM con SQL Server con la extensión de agente de IaaS de SQL mediante New-AzSqlVM:
# Register the SQL IaaS Agent extension to your subscription
Register-AzResourceProvider -ProviderNamespace Microsoft.SqlVirtualMachine
# Register SQL Server VM with the extension
New-AzSqlVM -Name $VMName -ResourceGroupName $ResourceGroupName -Location $Location `
-LicenseType $License
Hay tres formas de registrarse con la extensión:
- Automáticamente para todas las VM actuales y futuras de una suscripción
- Manualmente para una sola máquina virtual
- Manualmente para varias máquinas virtuales de forma masiva
Detención o eliminación de una máquina virtual
Si no necesita que la máquina virtual se ejecute continuamente, puede detenerla cuando no se esté usando y así evitar cargos innecesarios. El siguiente comando detiene la VM, pero la deja disponible para usarla en el futuro.
Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroupName
También puede eliminar de forma definitiva todos los recursos asociados a la máquina virtual con el comando Remove-AzResourceGroup. Si lo hace, también se elimina la máquina virtual de forma permanente, así que use este comando con cuidado.
Script completo
Para ver un script completo de PowerShell que proporciona una experiencia de un extremo a otro, consulte Implementación de una máquina virtual con SQL Server en Azure con PowerShell.
Contenido relacionado
Después de crear la máquina virtual, puede:
- Conectarse a la máquina virtual mediante RDP
- Configurar los ajustes de SQL Server en el portal de la VM, incluidas las opciones siguientes:
- Configuración de la conectividad
- Conectar clientes y aplicaciones a la nueva instancia de SQL Server