REST API を使用して Microsoft Fabric SQL Database を作成する
適用対象:✅Microsoft Fabric SQL Database
Fabric プラットフォームには、リソースのデプロイと管理に使用できる豊富な REST API のセットがあります。 これらの API を使用して、Fabric SQL データベースをデプロイできます。 この記事とサンプル スクリプトでは、Fabric SQL データベースをデプロイしてデータを追加するために使用できる基本的な PowerShell スクリプトを示します。
前提条件
- 既存の Fabric 容量が必要です。 そうでない場合は、Fabric 試用版を開始します。
- 必ず、管理ポータルのテナント設定を使って Microsoft Fabric SQL Database を有効にしてください。
- 新しいワークスペースを作成するか、既存の Fabric ワークスペースを使用します。
- SQL データベースを作成するには、ワークスペースの管理者またはメンバー ロールのメンバーである必要があります。
- SQLCMD の golang バージョンをインストールします。 Windows で
winget install sqlcmd
を実行してインストールします。 その他のオペレーティング システムについては、aka.ms/go-sqlcmd を参照してください。 - Az PowerShell モジュール。 PowerShell で
Install-Module az
を実行してインストールします。
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.'