Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:✅SQL-database in Microsoft Fabric
U kunt de Fabric REST API gebruiken om resources te implementeren en beheren, inclusief SQL-databases in Fabric.
In dit artikel en voorbeeldscript ziet u hoe u PowerShell gebruikt om de Rest API van Fabric aan te roepen voor het implementeren van een Fabric SQL-database.
Vereiste voorwaarden
- Je hebt een bestaande Fabric-capaciteit nodig. Als u dat niet doet, start u een Fabric-proefversie.
- Zorg ervoor dat u SQL-database in Fabric inschakelt met behulp van tenantinstellingen voor de beheerportal. Als u dat niet doet, krijgt u het foutbericht 'SQL-databank kon niet worden aangemaakt'.
- U kunt een bestaande werkruimte gebruiken of een nieuwe Fabric-werkruimte maken.
- U moet lid zijn van de beheerders- of lidrollen voor de werkruimte om een SQL-database te maken.
- Installeer de golang-versie van SQLCMD. Voer
winget install sqlcmd
uit op Windows om te installeren. Zie aka.ms/go-sqlcmd voor andere besturingssystemen. - PowerShell 5.1 of PowerShell 7.4 en hoger
- De Az PowerShell-module. Voer
Install-Module az
uit in PowerShell om te installeren.
Een nieuwe SQL-database maken via REST API
In dit voorbeeldscript wordt Connect-AzAccount
gebruikt als een alias van az login
om om referenties te vragen. Deze referenties worden gebruikt om een toegangstoken te verkrijgen dat moet worden gebruikt voor de REST API-aanroepen. SQLCMD maakt gebruik van de context van het account dat is gegeven aan Connect-AzAccount
.
Het script maakt een database aan die wordt benoemd met de alias van de aangemelde gebruiker en de datum. Momenteel retourneert de REST API geen status, dus we moeten een lus uitvoeren en controleren of de database is gemaakt. Nadat de database is gemaakt, wordt SQLCMD gebruikt om enkele objecten te maken en vervolgens te zoeken naar hun bestaan. Ten slotte verwijderen we de database.
Vervang in het volgende script <your workspace id>
door uw Fabric-werkruimte-ID. U kunt de id van een werkruimte gemakkelijk vinden in de URL. Dit is de unieke tekenreeks binnen twee /
tekens na /groups/
in uw browservenster. Bijvoorbeeld 11aa111-a11a-1111-1abc-aa1111aaaa
in https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/
.
Dit script demonstreert:
- Haal een toegangstoken op met behulp van Get-AzAccessToken en converteer het vanuit een beveiligde tekenreeks. Als u PowerShell 7 gebruikt, is ConvertFrom-SecureString- ook een optie.
- Maak een nieuwe SQL-database met behulp van de Items - Item-API maken.
- Een lijst weergeven van alle SQL-databases in een Fabric-werkruimte.
- Maak verbinding met de database met SQLCMD- om een script uit te voeren om een object te maken.
- Verwijder de database door de Items - Verwijder Item APIte gebruiken.
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)
}