如何使用PowerShell创建Azure SQL数据库

如果您需要对 SQL 数据库进行更改,您可以打开 SQL Server Management Studio,点击一下然后完成。但是当您需要在 Azure SQL 数据库中创建 10 次或 100 次,或者在一些自动化脚本中进行操作时呢?您需要使用 PowerShell!

在本教程中,您将学习如何使用 PowerShell 创建 Azure SQL 数据库和 SQL 服务器防火墙规则!

让我们开始吧!

先决条件

为了跟随本教程中的演示,请确保您具备以下条件:

  • 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 资源组 – 本教程将使用位于 westeurope 区域的 resource 组,名为 rg-dbaautomation

创建Azure SQL服务器

在创建Azure SQL数据库之前,您必须先创建一个Azure SQL服务器来托管它。假设您已经通过Azure进行了身份验证:

在本地计算机上打开PowerShell,并创建将托管Azure SQL数据库的Azure SQL服务器

下面的命令正在创建一个名为sqlestate的Azure SQL服务器,在先决条件资源组中使用SqlAdministrator作为SQL管理员用户名,密码为AVeryStrongP@ssword0。该命令将New-AzSqlServer cmdlet的输出保存以便稍后使用创建的服务器属性。

只要符合数据库要求,您可以创建自己选择的SQL管理员用户名和密码。

SQL服务器名称必须是全局唯一的。

## 将密码转换为安全字符串,因为创建 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-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

## 创建 PSCredential 对象以传递给 New-AzSqlServer cmdlet
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList 'SqlAdministrator',$pw 

## 创建 Azure SQL 服务器
$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 门户的过程更加顺畅。PowerShell 允许您自动化此过程,快速创建 Azure SQL 服务器和数据库。

您认为在日常工作中使用 PowerShell 创建 Azure SQL 数据库的能力将如何融入您的日常工作?

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