Comment créer une base de données Azure SQL avec PowerShell

Si vous devez apporter des modifications à une base de données SQL, vous pouvez ouvrir SQL Server Management Studio, cliquer un peu partout et le faire. Mais que se passe-t-il lorsque vous avez besoin de créer une base de données SQL Azure 10 ou 100 fois, ou dans un script d’automatisation ? Vous devez utiliser PowerShell!

Dans ce tutoriel, vous apprendrez comment créer une base de données SQL Azure et une règle de pare-feu SQL Server, le tout en PowerShell!

Commençons!

Prérequis

Pour suivre les démonstrations de ce tutoriel, assurez-vous d’avoir les éléments suivants :

  • A computer to run PowerShell – This tutorial uses Windows 10 using PowerShell v7.1.
  • A code editor like Visual Studio (VS) Code.
  • Le module PowerShell Az – Le tutoriel utilisera la version 5.9.0.
  • Le module PowerShell dbatools – Le tutoriel utilisera la version 1.0.145.
  • Un groupe de ressources Azure – Ce tutoriel utilisera un groupe de ressources appelé rg-dbaautomation dans la région westeurope.

Création du serveur Azure SQL

Avant de pouvoir créer une base de données Azure SQL, vous devez créer un serveur Azure SQL pour l’héberger. En supposant que vous soyez déjà authentifié sur Azure :

Ouvrez PowerShell sur votre ordinateur local et créez le serveur Azure SQL qui hébergera la base de données Azure SQL.

La commande ci-dessous crée un serveur Azure SQL appelé sqlestate dans le groupe de ressources prérequis avec un nom d’utilisateur administrateur SQL de SqlAdministrator et un mot de passe de AVeryStrongP@ssword0. La commande enregistre la sortie de la cmdlet New-AzSqlServer pour utiliser les attributs du serveur créé ultérieurement.

Vous pouvez créer un nom d’utilisateur et un mot de passe administrateur SQL de votre choix tant qu’ils respectent les exigences de la base de données.

Le nom du serveur SQL doit être globalement unique.

## Convertir le mot de passe en une chaîne sécurisée car la création d'un objet PSCredential
## le nécessite
$pw = ConvertTo-SecureString -String 'AVeryStrongP@ssword0' -AsPlainText -Force

## Créer l'objet PSCredential à transmettre à la cmdlet New-AzSqlServer
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList 'SqlAdministrator',$pw 

## Créer le serveur Azure SQL
$azSqlServer = New-AzSqlServer `
	-ServerName 'sqlestate123' `
	-ResourceGroupName 'rg-dbaautomation' `
	-Location 'westeurope' `
	-SqlAdministratorCredentials $credential

Création de la règle de pare-feu pour le serveur Azure SQL

Par défaut, le serveur Azure SQL n’autorise pas l’accès à une entité externe. Pour vous connecter au serveur, vous devez créer une règle de pare-feu du serveur pour accéder au serveur SQL depuis votre machine locale.

Pour créer la règle de pare-feu du serveur, recherchez l’adresse IP publique de votre ordinateur local et utilisez la cmdlet New-AzSqlServerFirewallRule pour créer la règle.

La commande ci-dessous utilise le site web http://ipinfo.io pour trouver l’adresse IP publique de votre ordinateur. Ensuite, elle crée la règle de pare-feu dans le groupe de ressources rg-dbaautomation appelée FirewallRule_Access et spécifie cette adresse IP pour toute la plage IP.

## Trouver l'adresse IP publique locale en interrogeant un site web
$ip = Invoke-RestMethod <https://ipinfo.io/json> | Select-Object -ExpandProperty IP

## Créer la règle de pare-feu du serveur en utilisant l'adresse IP publique
New-AzSqlServerFirewallRule -ResourceGroupName 'rg-dbaautomation' -ServerName $azSqlServer.ServerName -FirewallRuleName 'FirewallRule_Access' -StartIpAddress $ip -EndIpAddress $ip
Creating the Azure SQL Server firewall rule

Comment créer une base de données Azure SQL

Enfin, une fois que vous avez créé le serveur Azure SQL et la règle de pare-feu, créez maintenant la base de données en utilisant la New-AzSqlDatabase cmdlet.

La commande ci-dessous crée une base de données Azure SQL appelée Estate avec seulement une édition Basic hébergée sur le serveur nouvellement créé.

Pour trouver toutes les éditions disponibles, exécutez la Get-AzSqlServerServiceObjective cmdlet PowerShell.

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

Connexion à la base de données Azure SQL

Vous devriez maintenant avoir une base de données Azure SQL en cours d’exécution dans votre abonnement Azure prête à être utilisée. Maintenant, confirmez que vous pouvez vous y connecter en utilisant la Connect-DbaInstance cmdlet PowerShell.

Utilisant le FQDN du serveur Azure SQL précédemment créé, le nom de la base de données et les informations d’identification de l’administrateur SQL, testez la connexion à la base de données en utilisant le code ci-dessous.

## Test de connexion à l'instance
Connect-DbaInstance -SqlInstance $azSqlServer.FullyQualifiedDomainName -Database $azSqlDatabase.DatabaseName -SqlCredential $credential

Si vous pouvez vous connecter à la base de données, vous verrez la sortie suivante:

Running Connect-DbaInstance

Conclusion

Si vous souhaitez enregistrer toutes les étapes indiquées ci-dessus dans un seul script PowerShell, créez un nouveau script PowerShell et copiez-collez le fragment ci-dessous.

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

## Convertissez le mot de passe en une chaîne sécurisée car la création d'un objet PSCredential
## l'exige
$pw = ConvertTo-SecureString -String 'AVeryStrongP@ssword0' -AsPlainText -Force

## Créez l'objet PSCredential à passer à la cmdlet New-AzSqlServer
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList 'SqlAdministrator',$pw 

## Créez le serveur Azure SQL
$azSqlServer = New-AzSqlServer `
	-ServerName 'sqlestate123' `
	-ResourceGroupName $rg.ResourceGroupName `
	-Location $rg.Location `
	-SqlAdministratorCredentials $credential

## Trouvez l'adresse IP publique locale en interrogeant un site Web
$ip = Invoke-RestMethod <https://ipinfo.io/json> | Select-Object -ExpandProperty IP

## Créez la règle de pare-feu du serveur en utilisant l'adresse IP publique
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'

## Testez la connexion à l'instance
Connect-DbaInstance -SqlInstance $azSqlServer.FullyQualifiedDomainName -Database $azSqlDatabase.DatabaseName -SqlCredential $credential

Conclusion

L’utilisation de PowerShell pour créer une base de données Azure SQL rend le processus beaucoup plus fluide que l’utilisation du Portail Azure. PowerShell vous permet d’automatiser le processus pour créer rapidement des serveurs et des bases de données Azure SQL.

Où voyez-vous votre nouvelle capacité à créer des bases de données Azure SQL avec PowerShell s’intégrer dans votre routine quotidienne ?

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