Wie man eine Azure SQL-Datenbank mit PowerShell erstellt

Wenn Sie Änderungen an einer SQL-Datenbank vornehmen müssen, könnten Sie SQL Server Management Studio öffnen, ein wenig herumklicken und es bewerkstelligen. Aber was passiert, wenn Sie eine Azure SQL-Datenbank 10- oder 100-mal oder in einem Automatisierungsskript erstellen müssen? Sie müssen PowerShell verwenden!

In diesem Tutorial lernen Sie, wie Sie eine Azure SQL-Datenbank und eine SQL Server-Firewallregel alles in PowerShell erstellen!

Lassen Sie uns beginnen!

Voraussetzungen

Um den Demos in diesem Tutorial folgen zu können, stellen Sie sicher, dass Sie folgendes haben:

  • A computer to run PowerShell – This tutorial uses Windows 10 using PowerShell v7.1.
  • A code editor like Visual Studio (VS) Code.
  • Das Az PowerShell-Modul – Das Tutorial wird v5.9.0 verwenden.
  • Das dbatools PowerShell-Modul – Das Tutorial wird v1.0.145 verwenden.
  • Eine Azure-Ressourcengruppe – Dieses Tutorial wird eine Ressourcengruppe namens rg-dbaautomation in der westeuropa Region verwenden.

Die Erstellung des Azure SQL Servers

Bevor Sie eine Azure SQL-Datenbank erstellen können, müssen Sie einen Azure SQL Server erstellen, auf dem diese gehostet werden soll. Unter der Annahme, dass Sie bereits bei Azure authentifiziert sind:

Öffnen Sie PowerShell auf Ihrem lokalen Computer und erstellen Sie den Azure SQL Server, der die Azure SQL-Datenbank hosten wird.

Der folgende Befehl erstellt einen Azure SQL Server namens sqlestate in der vorherigen Ressourcengruppe mit einem SQL-Admin-Benutzernamen von SqlAdministrator und einem Passwort von AVeryStrongP@ssword0. Der Befehl speichert die Ausgabe des New-AzSqlServer-Cmdlets, um Attribute vom später erstellten Server zu verwenden.

Sie können einen SQL-Admin-Benutzernamen und ein Passwort Ihrer Wahl erstellen, solange es den Benutzeranforderungen der Datenbank entspricht.

Der Name des SQL-Servers muss global eindeutig sein.

## Konvertieren Sie das Passwort in einen sicheren String, da dies für die Erstellung eines PSCredential-Objekts erforderlich ist
## Objekt erfordert es
$pw = ConvertTo-SecureString -String 'AVeryStrongP@ssword0' -AsPlainText -Force

## Erstellen Sie das PSCredential-Objekt, um es an das New-AzSqlServer-Cmdlet zu übergeben
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList 'SqlAdministrator',$pw 

## Erstellen Sie den Azure SQL Server
$azSqlServer = New-AzSqlServer `
	-ServerName 'sqlestate123' `
	-ResourceGroupName 'rg-dbaautomation' `
	-Location 'westeurope' `
	-SqlAdministratorCredentials $credential

Erstellen der Azure SQL Server Firewall-Regel

Standardmäßig erlaubt der Azure SQL Server keinen Zugriff von außen. Um eine Verbindung zum Server herzustellen, müssen Sie als Nächstes eine Firewall-Regel für den Server erstellen, um auf den SQL-Server von Ihrem lokalen Computer aus zuzugreifen.

Um die Server-Firewall-Regel zu erstellen, ermitteln Sie die öffentliche IP-Adresse Ihres lokalen Computers und rufen Sie das New-AzSqlServerFirewallRule-Cmdlet auf, um die Regel zu erstellen.

Der folgende Befehl verwendet die Website http://ipinfo.io, um die öffentliche IP-Adresse Ihres Computers zu finden. Anschließend erstellt er die Firewall-Regel in der Ressourcengruppe rg-dbaautomation mit dem Namen FirewallRule_Access und gibt diese IP-Adresse für den gesamten IP-Bereich an.

## Finden Sie die lokale öffentliche IP-Adresse, indem Sie eine Website abfragen
$ip = Invoke-RestMethod <https://ipinfo.io/json> | Select-Object -ExpandProperty IP

## Erstellen Sie die Server-Firewall-Regel unter Verwendung der öffentlichen IP-Adresse
New-AzSqlServerFirewallRule -ResourceGroupName 'rg-dbaautomation' -ServerName $azSqlServer.ServerName -FirewallRuleName 'FirewallRule_Access' -StartIpAddress $ip -EndIpAddress $ip
Creating the Azure SQL Server firewall rule

Wie erstelle ich eine Azure SQL-Datenbank?

Schließlich, sobald Sie den Azure SQL-Server und die Firewall-Regel erstellt haben, erstellen Sie jetzt die Datenbank mit dem New-AzSqlDatabase-Befehl.

Der folgende Befehl erstellt eine Azure SQL-Datenbank mit dem Namen Estate und nur einer Basic-Edition, die auf dem gerade erstellten Server gehostet wird.

Um alle verfügbaren Editionen zu finden, führen Sie den Get-AzSqlServerServiceObjective-PowerShell-Befehl aus.

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

Verbindung zur Azure SQL-Datenbank

Sie sollten jetzt eine Azure SQL-Datenbank in Ihrem Azure-Abonnement haben, mit der Sie arbeiten können. Bestätigen Sie nun, dass Sie eine Verbindung dazu herstellen können, indem Sie den Connect-DbaInstance-PowerShell-Befehl verwenden.

Verwenden Sie den zuvor erstellten vollqualifizierten Domänennamen des Azure SQL-Servers, den Namen der Datenbank und die SQL-Admin-Anmeldeinformationen, um eine Verbindung zur Datenbank herzustellen.

## Testen Sie die Verbindung mit der Instanz
Connect-DbaInstance -SqlInstance $azSqlServer.FullyQualifiedDomainName -Database $azSqlDatabase.DatabaseName -SqlCredential $credential

Wenn Sie eine Verbindung zur Datenbank herstellen können, sehen Sie die folgende Ausgabe:

Running Connect-DbaInstance

Abschließend

Wenn Sie alle oben gezeigten Schritte in ein einzelnes PowerShell-Skript speichern möchten, erstellen Sie ein neues PowerShell-Skript und kopieren Sie den folgenden Snippet.

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

## Konvertieren Sie das Passwort in einen sicheren String, da dies für die Erstellung eines PSCredential erforderlich ist
## Objekts
$pw = ConvertTo-SecureString -String 'AVeryStrongP@ssword0' -AsPlainText -Force

## Erstellen Sie das PSCredential-Objekt, um es dem New-AzSqlServer-Cmdlet zu übergeben
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList 'SqlAdministrator',$pw 

## Erstellen Sie den Azure SQL Server
$azSqlServer = New-AzSqlServer `
	-ServerName 'sqlestate123' `
	-ResourceGroupName $rg.ResourceGroupName `
	-Location $rg.Location `
	-SqlAdministratorCredentials $credential

## Suchen Sie die lokale öffentliche IP-Adresse, indem Sie eine Website abfragen
$ip = Invoke-RestMethod <https://ipinfo.io/json> | Select-Object -ExpandProperty IP

## Erstellen Sie die Firewall-Regel für den Server unter Verwendung der öffentlichen IP-Adresse
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'

## Testen Sie die Verbindung zum Server
Connect-DbaInstance -SqlInstance $azSqlServer.FullyQualifiedDomainName -Database $azSqlDatabase.DatabaseName -SqlCredential $credential

Conclusion

Die Verwendung von PowerShell zur Erstellung einer Azure SQL-Datenbank macht den Prozess viel reibungsloser als die Verwendung des Azure-Portals. PowerShell ermöglicht es Ihnen, den Prozess zu automatisieren, um schnell Azure SQL Server und Datenbanken zu erstellen.

Wo sehen Sie Ihre neu gewonnene Fähigkeit, Azure SQL-Datenbanken mit PowerShell zu erstellen, in Ihren täglichen Ablauf passen?

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