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
- Vous avez besoin d’une capacité de Fabric existante. Si ce n’est pas le cas, démarrez une version d’évaluation de Fabric.
- Veillez à activer la base de données SQL dans Fabric en utilisant les paramètres de locataire du portail d’administration.
- Créer un espace de travail ou utiliser un espace de travail Fabric existant.
- Vous devez être membre des rôles Administrateur ou Membre de l’espace de travail pour créer une base de données SQL.
- Installer la version golang de SQLCMD. Exécutez
winget install sqlcmd
sur Windows pour l’installer. Pour les autres systèmes d’exploitation, consultez aka.ms/go-sqlcmd. - Module Az PowerShell. Exécutez
Install-Module az
dans PowerShell pour l’installer.
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.'