PowerShell로 Azure SQL Database 생성하는 방법

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 리소스 그룹 – 이 튜토리얼에서는 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

## 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 Database 생성 방법

마지막으로, Azure SQL 서버와 방화벽 규칙을 생성한 후에는 New-AzSqlDatabase cmdlet를 사용하여 데이터베이스를 생성합니다.

아래 명령은 새로 생성된 서버에 호스팅된 Basic 에디션만 있는 Estate라는 Azure SQL 데이터베이스를 생성합니다.

사용 가능한 모든 에디션을 찾으려면 Get-AzSqlServerServiceObjective PowerShell cmdlet을 실행하십시오.

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

Azure SQL Database에 연결

이제 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 서버와 데이터베이스를 빠르게 만들 수 있도록 프로세스를 자동화할 수 있습니다.

새로운 능력으로 얻은 Azure SQL 데이터베이스를 PowerShell로 만들기를 일상적인 루틴에 어떻게 통합하고 있나요?

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