Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :✅Base de données SQL dans Microsoft Fabric
Vous pouvez utiliser l’API REST Fabric pour déployer et gérer des ressources, notamment des bases de données SQL dans Fabric.
Cet article et cet exemple de script montrent comment utiliser PowerShell pour appeler l’API REST Fabric pour déployer une base de données Fabric SQL.
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.
- Vous pouvez utiliser un espace de travail existant ou créer un espace de travail Fabric.
- 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 sqlcmdsur Windows pour l’installer. Pour les autres systèmes d’exploitation, consultez aka.ms/go-sqlcmd. - PowerShell 5.1 ou PowerShell 7.4 et versions ultérieures
- Module Az PowerShell. Exécutez
Install-Module azdans 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 ces informations d’identification pour obtenir un jeton d’accès à utiliser 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/.
Ce script illustre les points suivants :
- Récupérez un jeton d’accès à l’aide de Get-AzAccessToken et convertissez-le depuis une chaîne sécurisée. Si vous utilisez PowerShell 7, ConvertFrom-SecureString est également une option.
- Créez une base de données SQL à l’aide de Éléments - Créer une API d’élément.
- Répertoriez toutes les bases de données SQL dans un espace de travail Fabric.
- Connectez-vous à la base de données avec SQLCMD pour exécuter un script pour créer un objet.
- Supprimez la base de données en utilisant l'API Items - Delete Item.
Import-Module Az.Accounts
az login
$workspaceid = '<your workspace id>'
$databaseid = $null
$headers = $null
$responseHeaders = $null
# 1. Get the access token and add it to the headers
$access_token = (Get-AzAccessToken -AsSecureString -ResourceUrl https://api.fabric.microsoft.com)
$ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($access_token.Token)
try {
$headers = @{
Authorization = $access_token.Type + ' ' + ([System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr))
}
$access_token.UserId -match('^[^@]+') | Out-Null
# 2. Create the database and wait for it to be created.
$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
}
# 3. List all SQL databases in a Fabric workspace
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)
#4. Connnect to the database and create a table
Write-Host 'Attempting to connect to the database.'
sqlcmd.exe -S $databaseProperties.ServerFqdn -d $databaseProperties.DatabaseName -G -Q 'create table test2
(
id int
);
insert into test2 values (1);
insert into test2 values (2);
insert into test2 values (3);
select * from test2;'
#5. Delete the 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 'Cleaned up:' $body.displayName
} finally {
# The following lines ensure that sensitive data is not left in memory.
$headers = [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
$parameters = [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
}