Creare un database SQL in Microsoft Fabric tramite l'API REST
Si applica a:✅Database SQL in Microsoft Fabric
La piattaforma Fabric include un set completo di API REST che possono essere usate per distribuire e gestire le risorse. Queste API possono essere usate per distribuire i database SQL di Fabric. Questo articolo e uno script di esempio illustrano uno script di PowerShell di base che può essere usato per distribuire un database SQL dell'infrastruttura e aggiungervi dati.
Prerequisiti
- Tutto ciò che serve è una capacità di Fabric. In caso contrario, avviare una versione di valutazione di Fabric.
- Assicurarsi di abilitare il database SQL in Fabric usando le impostazioni del tenant del portale di amministrazione.
- Creare una nuova area di lavoro o usare un'area di lavoro infrastruttura esistente.
- Per creare un database SQL, è necessario essere membri dei ruoli Amministratore o Membro per l'area di lavoro.
- Installare la versione golang di SQLCMD. Eseguire
winget install sqlcmd
in Windows per l'installazione. Per altri sistemi operativi, vedere aka.ms/go-sqlcmd. - Modulo Az PowerShell. Eseguire
Install-Module az
in PowerShell per l'installazione.
Creare un nuovo database SQL tramite l'API REST
Questo script di esempio usa Connect-AzAccount
, un alias di az login
per richiedere le credenziali. Usa quindi le credenziali per ottenere un token di accesso che verrà usato per le chiamate API REST. SQLCMD usa il contesto dell'account assegnato a Connect-AzAccount
.
Lo script crea un database denominato con l'alias dell'utente connesso e la data. Attualmente, l'API REST non restituisce uno stato, quindi è necessario eseguire un ciclo e verificare la presenza del database da creare. Dopo aver creato il database, SQLCMD viene usato per creare alcuni oggetti e quindi eseguire una query sulla loro esistenza. Infine, si elimina il database.
Nello script seguente sostituire <your workspace id>
con l'ID dell'area di lavoro infrastruttura. È possibile trovare facilmente l'ID di un'area di lavoro nell'URL, ovvero la stringa univoca all'interno di due /
caratteri dopo /groups/
nella finestra del browser. Ad esempio, 11aa111-a11a-1111-1abc-aa1111aaaa
in 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
}
Elencare ora i database nell'area di lavoro per visualizzare il nuovo database 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)
È anche possibile eseguire script per istruzioni T-sQL tramite SQLCMD e chiamate API REST. In questo script di esempio successivo verranno create alcune tabelle.
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
Pulire le risorse
Facoltativamente, è possibile eliminare il database anche usando una chiamata API REST.
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.'