Partager via


Créer une base de données SQL dans Microsoft Fabric via une API REST

S’applique à :Base de données SQL dans Microsoft Fabric

La plateforme Fabric dispose d’un ensemble complet d’API REST qui peuvent être utilisées pour déployer et gérer des ressources. Ces API peuvent être utilisées pour déployer des bases de données SQL Fabric. Cet article et cet exemple de script illustrent un script PowerShell simple qui peut être utilisé pour déployer une base de données SQL Fabric et y ajouter des données.

Prérequis

Créer une base de données SQL via l’API REST

Cet exemple de script utilise Connect-AzAccount, un alias d’az login pour demander des informations d’identification. Il utilise ensuite les informations d’identification pour obtenir un jeton d’accès qui sera utilisé pour les appels d’API REST. SQLCMD utilise le contexte du compte qui a été donné à Connect-AzAccount.

Le script crée une base de données nommée avec l’alias de l’utilisateur connecté et la date. Actuellement, l’API REST ne retourne pas d’état, donc nous devons effectuer une boucle et vérifier que la base de données est créée. Une fois la base de données créée, SQLCMD est utilisé pour créer des objets, puis interroger leur existence. Pour finir, nous supprimons la base de données.

Dans le script suivant, remplacez <your workspace id> par votre ID d’espace de travail Fabric. Vous pouvez trouver l’ID d’un espace de travail facilement dans l’URL. En effet, il s’agit de la chaîne unique comprise entre deux caractères / après /groups/ dans votre fenêtre de navigateur. Par exemple, 11aa111-a11a-1111-1abc-aa1111aaaa dans 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 
   } 

À présent, répertoriez les bases de données dans l’espace de travail pour voir la nouvelle base de données 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) 

Vous pouvez également exécuter des scripts d’instructions T-SQL via SQLCMD et des appels d’API REST. Dans cet exemple de script suivant, nous allons créer des tables.

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 

Nettoyer les ressources

Si vous le souhaitez, vous pouvez également supprimer la base de données à l’aide d’un appel d’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.'