다음을 통해 공유


REST API를 통해 Microsoft Fabric에서 SQL 데이터베이스 만들기

적용 대상:Microsoft Fabric의 SQL 데이터베이스

Fabric 플랫폼에는 리소스를 배포하고 관리하는 데 사용할 수 있는 다양한 REST API 집합이 있습니다. 이러한 API를 사용하여 패브릭 SQL 데이터베이스를 배포할 수 있습니다. 이 문서 및 샘플 스크립트는 패브릭 SQL 데이터베이스를 배포하고 데이터를 추가하는 데 사용할 수 있는 기본 PowerShell 스크립트를 보여 줍니다.

필수 조건

REST API를 통해 새 SQL 데이터베이스 만들기

이 예제 스크립트는 Connect-AzAccount자격 증명을 묻는 데 사용되는 별칭 az login 입니다. 그런 다음 자격 증명을 사용하여 REST API 호출에 사용할 액세스 토큰을 가져옵니다. SQLCMD는 에 제공된 계정의 컨텍스트를 Connect-AzAccount사용합니다.

스크립트는 로그인한 사용자의 별칭과 날짜를 사용하여 명명된 데이터베이스를 만듭니다. 현재 REST API는 상태를 반환하지 않으므로 데이터베이스를 만들고 반복하고 확인해야 합니다. 데이터베이스를 만든 후 SQLCMD를 사용하여 일부 개체를 만든 다음 해당 개체의 존재 여부에 대해 쿼리합니다. 마지막으로 데이터베이스를 삭제합니다.

다음 스크립트에서 패브릭 작업 영역 ID로 바꿉 <your workspace id> 니다. URL에서 작업 영역의 ID를 쉽게 찾을 수 있습니다. 이 ID는 브라우저 창에서 두 /groups/ 문자 안에 있는 / 고유한 문자열입니다. 예를 들어 . 11aa111-a11a-1111-1abc-aa1111aaaa https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/

Import-Module Az 
Connect-AzAccount 
$access_token = (Get-AzAccessToken -ResourceUrl https://analysis.windows.net/powerbi/api) 
$headers = @{ 
   Authorization = $access_token.Type + ' ' + $access_token.Token 
   } 
$workspaceid = '<your workspace id>' 
$databaseid = $null 
$responseHeaders = $null 
$access_token.UserId -match('^[^@]+') | Out-Null 
$body = @{ 
   displayName = $matches[0] + (Get-Date -Format "MMddyyyy") 
   type = "SQLDatabase" 
   description = "Created using public api" 
   } 

$parameters = @{ 
   Method="Post" 
   Headers=$headers 
   ContentType="application/json" 
   Body=($body | ConvertTo-Json) 
   Uri = 'https://api.fabric.microsoft.com/v1/workspaces/' + $workspaceid + '/items' 
   } 

Invoke-RestMethod @parameters -ErrorAction Stop 
$databases = (Invoke-RestMethod -Headers $headers -Uri https://api.fabric.microsoft.com/v1/workspaces/$($workspaceid)/SqlDatabases).value 
$databaseid = $databases.Where({$_.displayName -eq $body.displayName}).id 
While($databaseid -eq $null) 
   { 
   Write-Host 'Waiting on database create.' 
   Start-Sleep 30 
   $databases = (Invoke-RestMethod -Headers $headers -Uri https://api.fabric.microsoft.com/v1/workspaces/$($workspaceid)/SqlDatabases).value 
   $databaseid = $databases.Where({$_.displayName -eq $body.displayName}).id 
   } 

이제 작업 영역의 데이터베이스를 나열하여 새 SQL 데이터베이스를 확인합니다.

Write-Host 'Listing databases in workspace.' 

Invoke-RestMethod -Headers $headers -Uri https://api.fabric.microsoft.com/v1/workspaces/$($workspaceid)/items?type=SQlDatabase | select -ExpandProperty Value | ft 

$databaseProperties = (Invoke-RestMethod -Headers $headers -Uri https://api.fabric.microsoft.com/v1/workspaces/$($workspaceid)/SqlDatabases/$($databaseid) | select -ExpandProperty Properties) 

SQLCMD 및 REST API 호출을 통해 스크립트 T-sQL 문을 실행할 수도 있습니다. 다음 샘플 스크립트에서는 몇 가지 테이블을 만듭니다.

Write-Host '...Creating a table.' 

# this script requires the golang version of SQLCMD. Run 'winget install sqlcmd' on a Windows desktop to install. For other operating systems, visit aka.ms/go-sqlcmd 

sqlcmd.exe -S $databaseProperties.ServerFqdn -d $databaseProperties.DatabaseName -G -Q 'create table test2 
   ( 
   id int 
   )' 

Write-Host '...Query sys.tables to confirm create.' 

sqlcmd.exe -S $databaseProperties.ServerFqdn -d $databaseProperties.DatabaseName -G -Q 'SELECT * FROM sys.tables' 

Invoke-RestMethod -Headers $headers -Uri https://api.fabric.microsoft.com/v1/workspaces/$($workspaceid)/items?type=SQlDatabase | select -ExpandProperty Value | ft 

리소스 정리

필요에 따라 REST API 호출을 사용하여 데이터베이스를 삭제할 수도 있습니다.

Write-Host 'Deleting database.' 

$parameters = @{ 

Method="Delete" 

Headers=$headers 

ContentType="application/json" 

Body=($body | ConvertTo-Json) 

Uri = 'https://api.fabric.microsoft.com/v1/workspaces/' + $workspaceid + '/items/' + $databaseid 

} 

Invoke-RestMethod @parameters 

Write-Output 'Deleted database.'