通过 REST API 创建 Microsoft Fabric SQL 数据库

适用于:Microsoft Fabric SQL 数据库

Fabric 平台有一组丰富的 REST API,可用于部署和管理资源。 这些 API 可用于部署 Fabric SQL 数据库。 本文和示例脚本演示了可用于部署 Fabric SQL 数据库并向其添加数据的基本 PowerShell 脚本。

先决条件

通过 REST API 创建新的 SQL 数据库

此示例脚本使用 Connect-AzAccountaz login 的别名)来提示输入凭据。 然后,它使用凭据来获取将用于 REST API 调用的访问令牌。 SQLCMD 使用提供给 Connect-AzAccount 的帐户的上下文。

该脚本会创建一个以登录用户的别名和日期命名的数据库。 目前,REST API 不会返回状态,因此我们必须循环检查要创建的数据库。 创建数据库后,SQLCMD 用于创建一些对象,然后查询这些对象是否存在。 最后,删除数据库。

在以下脚本中,将 <your workspace id> 替换为你的 Fabric 工作区 ID。 可以在 URL 中轻松找到工作区的 ID,它是浏览器窗口中 /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.'