如何使用 PowerShell 創建 Azure SQL 數據庫

如果您需要對 SQL 數據庫進行更改,您可以打開 SQL Server Management Studio,點擊一下並進行更改。但是,如果您需要在 Azure SQL 數據庫中創建 10 次或 100 次,或者在某些自動化腳本中進行創建,您需要使用 PowerShell!

在本教程中,您將學習如何使用 PowerShell 創建 Azure SQL 數據庫和 SQL Server 防火牆規則!

讓我們開始吧!

先決條件

為了跟隨本教程中的演示,請確保您擁有以下內容:

  • A computer to run PowerShell – This tutorial uses Windows 10 using PowerShell v7.1.
  • A code editor like Visual Studio (VS) Code.
  • Az PowerShell 模塊 – 本教程將使用 v5.9.0。
  • dbatools PowerShell 模塊 – 本教程將使用 v1.0.145。
  • 一個Azure 資源組 – 本教程將使用名為rg-dbaautomation的資源組,在westeurope地區。

建立 Azure SQL Server

在您建立 Azure SQL 資料庫之前,您必須先建立一個 Azure SQL 伺服器來托管它。假設您已經通過驗證並登入 Azure:

在您的本地電腦上開啟 PowerShell 並建立將托管 Azure SQL 資料庫的Azure SQL 伺服器

下面的指令是在先決條件資源群組中建立一個名為 sqlestate 的 Azure SQL 伺服器,並使用 SQL 管理員帳戶名稱 SqlAdministrator 和密碼 AVeryStrongP@ssword0。此指令會將 New-AzSqlServer cmdlet 的輸出保存,以便稍後使用從建立的伺服器中提取的屬性。

您可以創建您選擇的 SQL 管理員帳戶名稱和密碼,只要符合資料庫需求

SQL 伺服器名稱必須是全局唯一的。

## 將密碼轉換為安全字串,因為創建 PSCredential
## 物件需要它
$pw = ConvertTo-SecureString -String 'AVeryStrongP@ssword0' -AsPlainText -Force

## 建立 PSCredential 物件以傳遞給 New-AzSqlServer cmdlet
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList 'SqlAdministrator',$pw 

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

創建 Azure SQL Server 防火牆規則

預設情況下,Azure SQL Server 不允許任何外部實體訪問。要連接到伺服器,您必須接著創建一個伺服器防火牆規則以從本地計算機訪問 SQL 伺服器。

要創建伺服器防火牆規則,找到您本地計算機的公共 IP 地址,並調用New-AzSqlServerFirewallRule cmdlet來創建規則。

下面的命令正在使用網站http://ipinfo.io來查找您計算機的公共 IP 地址。然後在名為rg-dbaautomation的資源群組中創建防火牆規則,名為FirewallRule_Access,並指定該 IP 地址為整個 IP 範圍。

## 通過查詢網站找到本地公共 IP 地址
$ip = Invoke-RestMethod <https://ipinfo.io/json> | Select-Object -ExpandProperty IP

## 使用公共 IP 地址創建伺服器防火牆規則
New-AzSqlServerFirewallRule -ResourceGroupName 'rg-dbaautomation' -ServerName $azSqlServer.ServerName -FirewallRuleName 'FirewallRule_Access' -StartIpAddress $ip -EndIpAddress $ip
Creating the Azure SQL Server firewall rule

如何創建 Azure SQL 數據庫

最後,一旦您創建了 Azure SQL 伺服器和防火牆規則,現在使用 New-AzSqlDatabase cmdlet 創建數據庫。

以下命令創建一個名為 Estate 的 Azure SQL 數據庫,僅使用 Basic 版本,托管在剛創建的伺服器上。

要查找所有可用版本,運行 Get-AzSqlServerServiceObjective PowerShell cmdlet

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

連接到 Azure SQL 數據庫

您現在應該在 Azure 訂閱中運行一個 Azure SQL 數據庫,準備好使用。現在,確認您可以使用 Connect-DbaInstance PowerShell cmdlet 連接到它。

使用之前創建的 Azure SQL 伺服器的 FQDN、數據庫名稱和 SQL 管理員憑據,使用以下代碼測試連接到數據庫。

## 測試連接到實例
Connect-DbaInstance -SqlInstance $azSqlServer.FullyQualifiedDomainName -Database $azSqlDatabase.DatabaseName -SqlCredential $credential

如果您可以連接到數據庫,您將看到以下輸出:

Running Connect-DbaInstance

結束

如果您希望將上述所有步驟保存到單個 PowerShell 腳本中,請創建一個新的 PowerShell 腳本,並複製並粘貼下面的片段。

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

## 將密碼轉換為安全字串,因為建立 PSCredential
## 物件需要
$pw = ConvertTo-SecureString -String 'AVeryStrongP@ssword0' -AsPlainText -Force

## 建立要傳遞給 New-AzSqlServer cmdlet 的 PSCredential 物件
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList 'SqlAdministrator',$pw 

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

## 通過查詢網站查找本地公共 IP 地址
$ip = Invoke-RestMethod <https://ipinfo.io/json> | Select-Object -ExpandProperty IP

## 使用公共 IP 地址建立伺服器防火牆規則
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'

## 測試連接到實例
Connect-DbaInstance -SqlInstance $azSqlServer.FullyQualifiedDomainName -Database $azSqlDatabase.DatabaseName -SqlCredential $credential

結論

使用 PowerShell 創建 Azure SQL 數據庫比使用 Azure Portal 流程更簡單。 PowerShell 允許您自動化流程,快速創建 Azure SQL 伺服器和數據庫。

您如何看待使用 PowerShell 創建 Azure SQL 數據庫的新能力融入您的日常工作中?

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