Как создать базу данных Azure SQL с помощью PowerShell

Если вам нужно внести изменения в базу данных SQL, вы можете открыть SQL Server Management Studio, немного покликать и сделать это. Но что делать, если вам нужно создать базу данных Azure SQL 10 или 100 раз или в каком-то скрипте автоматизации? Вам нужно использовать PowerShell!

В этом учебнике вы научитесь создавать базу данных Azure SQL и правило брандмауэра SQL сервера, все в PowerShell!

Поехали!

Предварительные условия

Чтобы следовать демонстрациям в этом учебнике, убедитесь, что у вас есть следующее:

  • A computer to run PowerShell – This tutorial uses Windows 10 using PowerShell v7.1.
  • A code editor like Visual Studio (VS) Code.
  • Модуль PowerShell Az – В учебнике будет использоваться версия 5.9.0.
  • Модуль PowerShell dbatools – В учебнике будет использоваться версия 1.0.145.
  • Группа ресурсов Azure – В этом учебнике будет использоваться группа ресурсов под названием rg-dbaautomation в регионе westeurope.

Создание сервера Azure SQL

Прежде чем вы сможете создать базу данных Azure SQL, вам необходимо создать сервер Azure SQL, на котором она будет размещена. Предполагается, что вы уже прошли аутентификацию в Azure:

Откройте PowerShell на вашем локальном компьютере и создайте сервер Azure SQL, который будет размещать базу данных Azure SQL.

Нижеприведенная команда создает сервер Azure SQL с именем sqlestate в предварительно созданной группе ресурсов с именем группы и администратором SQL с именем пользователя SqlAdministrator и паролем AVeryStrongP@ssword0. Команда сохраняет вывод командлета New-AzSqlServer, чтобы использовать атрибуты из позднее созданного сервера.

Вы можете создать имя пользователя и пароль администратора SQL на ваше усмотрение, при условии, что они соответствуют требованиям базы данных.

Имя SQL-сервера должно быть уникальным в мировом масштабе.

## Преобразуйте пароль в защищенную строку, поскольку для создания объекта PSCredential это необходимо
## объект требует этого
$pw = ConvertTo-SecureString -String 'AVeryStrongP@ssword0' -AsPlainText -Force

## Создайте объект PSCredential для передачи в cmdlet New-AzSqlServer
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList 'SqlAdministrator',$pw 

## Создайте сервер Azure SQL
$azSqlServer = New-AzSqlServer `
	-ServerName 'sqlestate123' `
	-ResourceGroupName 'rg-dbaautomation' `
	-Location 'westeurope' `
	-SqlAdministratorCredentials $credential

Создание правила брандмауэра Azure SQL Server

По умолчанию сервер Azure SQL не разрешает доступ ни к каким внешним сущностям. Для подключения к серверу следует создать правило брандмауэра сервера, чтобы получить доступ к серверу SQL с вашего локального компьютера.

Для создания правила брандмауэра сервера найдите публичный IP-адрес вашего локального компьютера и вызовите New-AzSqlServerFirewallRule, чтобы создать правило.

Приведенная ниже команда использует веб-сайт 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.

Приведенная ниже команда создает базу данных Azure SQL с именем Estate только с изданием Basic, размещенным на только что созданном сервере.

Чтобы увидеть все доступные издания, выполните команду PowerShell Get-AzSqlServerServiceObjective.

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

Подключение к базе данных Azure SQL

Теперь у вас должна быть база данных Azure SQL, готовая к использованию в вашей подписке Azure. Теперь подтвердите, что вы можете подключиться к ней с помощью команды PowerShell Connect-DbaInstance.

Используя полное доменное имя сервера Azure SQL, имя базы данных и учетные данные администратора 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 для передачи в cmdlet New-AzSqlServer
$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.

Где вы видите, как ваша новообретенная способность создавать базы данных Azure SQL с использованием PowerShell вписывается в ваш повседневный ритм?

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