次の方法で共有


REST API を使用して Microsoft Fabric SQL Database を作成する

適用対象:✅Microsoft Fabric SQL Database

Fabric プラットフォームには、リソースのデプロイと管理に使用できる豊富な REST API のセットがあります。 これらの API を使用して、Fabric SQL データベースをデプロイできます。 この記事とサンプル スクリプトでは、Fabric SQL データベースをデプロイしてデータを追加するために使用できる基本的な PowerShell スクリプトを示します。

前提条件

REST API を使用して新しい SQL データベースを作成する

このサンプル スクリプトでは、az login のエイリアスである Connect-AzAccount を使用して資格情報の入力を求めます。 次に、その資格情報を使用して、REST API 呼び出しに使用されるアクセス トークンを取得します。 SQLCMD は、Connect-AzAccount に指定されたアカウントのコンテキストを使用します。

このスクリプトは、ログインしたユーザーのエイリアスと日付で名前が付けられたデータベースを作成します。 現在、REST API は状態を返さないため、ループしてデータベースが作成されているかどうかを確認する必要があります。 データベースが作成されると、SQLCMD を使用していくつかのオブジェクトが作成され、それらの存在が照会されます。 最後に、データベースを削除します。

次のスクリプトでは、<your workspace id> を Fabric ワークスペース ID に置き換えます。 ワークスペースの ID は URL で簡単に見つけることができます。これは、ブラウザー ウィンドウの / の後の 2 つの /groups/ 文字内の一意の文字列です。 たとえば、https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/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.'