Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Gælder for:✅SQL-database i Microsoft Fabric
Du kan bruge Fabric REST API til at udrulle og administrere ressourcer, herunder SQL-databaser i Fabric.
Denne artikel og eksempelscript viser, hvordan du bruger PowerShell til at kalde Fabric REST API'en for at udrulle en Fabric SQL-database.
Forudsætninger
- Du har brug for en eksisterende Fabric-kapacitet. Hvis du ikke gør det, skal du starte en Fabric-prøveversion.
- Du kan bruge et eksisterende arbejdsområde eller oprette et nyt Fabric-arbejdsområde.
- Du skal være medlem af rollerne Administrator eller Medlem for arbejdsområdet for at oprette en SQL-database.
- Installér golangversionen af SQLCMD. Kør
winget install sqlcmdpå Windows for at installere. Du kan se andre operativsystemer under aka.ms/go-sqlcmd. - PowerShell 5.1 eller PowerShell 7.4 eller nyere
- Az PowerShell-modulet. Kør
Install-Module azi PowerShell for at installere.
Opret en ny SQL-database via REST API
Dette eksempelscript bruger Connect-AzAccount, som er et alias az login for til at bede om legitimationsoplysninger. Den bruger disse legitimationsoplysninger til at hente et adgangstoken, der skal bruges til REST API-kald. SQLCMD bruger konteksten for den konto, der blev givet til Connect-AzAccount.
Scriptet opretter en database med navnet på den bruger, der er logget på, og datoen. REST-API'en returnerer i øjeblikket ikke en status, så vi skal løkke og kontrollere, om databasen er oprettet. Når databasen er oprettet, bruges SQLCMD til at oprette nogle objekter og derefter forespørge om deres eksistens. Endelig sletter vi databasen.
I følgende script skal du erstatte <your workspace id> med dit Fabric-arbejdsområde-id. Du kan nemt finde id'et for et arbejdsområde i URL-adressen. Det er den entydige streng inden for to / tegn efter /groups/ i browservinduet. I f.eks 11aa111-a11a-1111-1abc-aa1111aaaa . i https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/.
Dette script viser:
- Hent et adgangstoken ved hjælp af Get-AzAccessToken-, og konvertere det fra en sikker streng. Hvis du bruger PowerShell 7, er ConvertFrom-SecureString- også en mulighed.
- Opret en ny SQL-database ved hjælp af Items – Opret element-API-.
- Vis alle SQL-databaser i et Fabric-arbejdsområde.
- Opret forbindelse til databasen med SQLCMD- for at køre et script for at oprette et objekt.
- Slet databasen ved hjælp af api'en
Elementer – Slet element.
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)
}