Condividi tramite


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

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.'