Cómo crear una base de datos de Azure SQL con PowerShell

Si necesita realizar cambios en una base de datos SQL, puede abrir SQL Server Management Studio, hacer clic un poco y lograrlo. Pero ¿qué sucede cuando necesita crear una base de datos SQL de Azure 10 o 100 veces o en algún script de automatización? ¡Necesita usar PowerShell!

En este tutorial, aprenderá cómo crear una base de datos SQL de Azure y una regla de firewall del servidor SQL, ¡todo en PowerShell!

¡Empecemos!

Prerrequisitos

Para seguir las demos en este tutorial, asegúrese de tener lo siguiente:

  • A computer to run PowerShell – This tutorial uses Windows 10 using PowerShell v7.1.
  • A code editor like Visual Studio (VS) Code.
  • El módulo de PowerShell de Az: El tutorial usará la versión 5.9.0.
  • El módulo de PowerShell de dbatools: El tutorial usará la versión 1.0.145.
  • Un grupo de recursos de Azure: Este tutorial usará un grupo de recursos llamado rg-dbaautomation en la región oeste de Europa.

Creando el servidor SQL de Azure

Antes de poder crear una base de datos SQL de Azure, debes crear un servidor SQL de Azure en el que alojarla. Suponiendo que ya estás autenticado en Azure:

Abre PowerShell en tu ordenador local y crea el servidor SQL de Azure que alojará la base de datos SQL de Azure.

El comando a continuación está creando un servidor SQL de Azure llamado sqlestate en el grupo de recursos previo con un nombre de usuario de administrador de SQL de SqlAdministrator y una contraseña de AVeryStrongP@ssword0. El comando está guardando la salida del cmdlet New-AzSqlServer para usar atributos del servidor creado más tarde.

Puedes crear un nombre de usuario y contraseña de administrador de SQL a tu elección siempre que cumpla con los requisitos de la base de datos.

El nombre del servidor SQL debe ser globalmente único.

## Convierte la contraseña en una cadena segura ya que crear un PSCredential
## objeto lo requiere
$pw = ConvertTo-SecureString -String 'AVeryStrongP@ssword0' -AsPlainText -Force

## Crea el objeto PSCredential para pasar al cmdlet New-AzSqlServer
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList 'SqlAdministrator',$pw 

## Crear el servidor Azure SQL
$azSqlServer = New-AzSqlServer `
	-ServerName 'sqlestate123' `
	-ResourceGroupName 'rg-dbaautomation' `
	-Location 'westeurope' `
	-SqlAdministratorCredentials $credential

Creando la regla de firewall del servidor Azure SQL

Por defecto, el servidor Azure SQL no permite el acceso a ninguna entidad externa. Para conectarse al servidor, debe crear a continuación una regla de firewall del servidor para acceder al servidor SQL desde su máquina local.

Para crear la regla de firewall del servidor, encuentre la dirección IP pública de su computadora local e invoque el New-AzSqlServerFirewallRule cmdlet para crear la regla.

El siguiente comando está utilizando el sitio web http://ipinfo.io para encontrar la dirección IP pública de su computadora. Luego está creando la regla de firewall en el grupo de recursos rg-dbaautomation llamada FirewallRule_Access y especificando esa dirección IP para todo el rango de IP.

## Encuentra la dirección IP pública local consultando un sitio web
$ip = Invoke-RestMethod <https://ipinfo.io/json> | Select-Object -ExpandProperty IP

## Cree la regla de firewall del servidor utilizando la dirección IP pública
New-AzSqlServerFirewallRule -ResourceGroupName 'rg-dbaautomation' -ServerName $azSqlServer.ServerName -FirewallRuleName 'FirewallRule_Access' -StartIpAddress $ip -EndIpAddress $ip
Creating the Azure SQL Server firewall rule

Cómo crear una base de datos Azure SQL

Finalmente, una vez que hayas creado el servidor Azure SQL y la regla del cortafuegos, ahora crea la base de datos utilizando el New-AzSqlDatabase cmdlet.

El comando a continuación crea una base de datos Azure SQL llamada Estate con solo una edición Basic alojada en el servidor recién creado.

Para encontrar todas las ediciones disponibles, ejecuta el cmdlet de PowerShell Get-AzSqlServerServiceObjective.

New-AzSqlDatabase -ResourceGroupName 'rg-dbaautomation' -ServerName $azSqlServer.ServerName -DatabaseName 'Estate' -Edition 'Basic'
Creating the Azure SQL database

Conexión a la base de datos Azure SQL

Ahora deberías tener una base de datos Azure SQL ejecutándose en tu suscripción de Azure lista para funcionar. Ahora, confirma que puedes conectarte utilizando el Connect-DbaInstance cmdlet de PowerShell.

Utilizando el FQDN del servidor Azure SQL creado anteriormente, el nombre de la base de datos y las credenciales de administrador de SQL, prueba la conexión a la base de datos con el código siguiente.

## Prueba de conexión a la instancia
Connect-DbaInstance -SqlInstance $azSqlServer.FullyQualifiedDomainName -Database $azSqlDatabase.DatabaseName -SqlCredential $credential

Si puedes conectarte a la base de datos, verás la siguiente salida:

Running Connect-DbaInstance

Conclusión

Si deseas guardar todos estos pasos mostrados anteriormente en un solo script de PowerShell, crea un nuevo script y copia y pega el fragmento de código siguiente.

$rg = New-AzResourceGroup -Name 'rg-dbaautomation' -Location 'westeurope'

## Convierta la contraseña en una cadena segura ya que crear un objeto PSCredential
## lo requiere
$pw = ConvertTo-SecureString -String 'AVeryStrongP@ssword0' -AsPlainText -Force

## Cree el objeto PSCredential para pasar al cmdlet New-AzSqlServer
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList 'SqlAdministrator',$pw 

## Cree el servidor Azure SQL
$azSqlServer = New-AzSqlServer `
	-ServerName 'sqlestate123' `
	-ResourceGroupName $rg.ResourceGroupName `
	-Location $rg.Location `
	-SqlAdministratorCredentials $credential

## Encuentre la dirección IP pública local consultando un sitio web
$ip = Invoke-RestMethod <https://ipinfo.io/json> | Select-Object -ExpandProperty IP

## Cree la regla del firewall del servidor utilizando la dirección IP pública
New-AzSqlServerFirewallRule -ResourceGroupName $rg.ResourceGroupName -ServerName $azSqlServer.ServerName -FirewallRuleName 'FirewallRule_Access' -StartIpAddress $ip -EndIpAddress $ip

New-AzSqlDatabase -ResourceGroupName $rg.ResourceGroupName -ServerName $azSqlServer.ServerName -DatabaseName 'Estate' -Edition 'Basic'

## Pruebe la conexión a la instancia
Connect-DbaInstance -SqlInstance $azSqlServer.FullyQualifiedDomainName -Database $azSqlDatabase.DatabaseName -SqlCredential $credential

Conclusión

Usar PowerShell para crear una base de datos Azure SQL facilita mucho el proceso en comparación con el uso del Portal de Azure. PowerShell le permite automatizar el proceso para crear rápidamente servidores y bases de datos Azure SQL.

¿Dónde ves que tu nueva habilidad para crear bases de datos Azure SQL con PowerShell encaja en tu rutina diaria?

Source:
https://adamtheautomator.com/create-azure-sql-database/