Vytvorenie databázy SQL v službe Microsoft Fabric cez REST API
Vzťahuje sa na:✅databáza SQL v službe Microsoft Fabric
Platforma Fabric obsahuje bohatú množinu rozhraní REST API, ktoré možno použiť na nasadenie a spravovanie zdrojov. Tieto rozhrania API možno použiť na nasadenie databáz SQL služby Fabric. Tento článok a vzorový skript ukazujú základný skript prostredia PowerShell, ktorý možno použiť na nasadenie databázy SQL služby Fabric a pridanie údajov do nej.
Požiadavky
- Potrebujete existujúcu kapacitu služby Fabric. Ak nie, spustite skúšobnú verziu služby Fabric.
- Uistite sa, že ste povolili možnosť Povoliť databázu SQL v službe Fabric pomocou nastavení nájomníka portálu na správu.
- Vytvorte nový pracovný priestor alebo použite existujúci pracovný priestor služby Fabric.
- Ak chcete vytvoriť databázu SQL, musíte byť členom roly správcu alebo člena pracovného priestoru.
- Nainštalujte si verziu golang aplikácie SQLCMD. Nainštalujte ju spustením
winget install sqlcmd
v systéme Windows. Ďalšie operačné systémy nájdete v téme aka.ms/go-sqlcmd. - Modul Az PowerShell. Nainštalujte
Install-Module az
ju spustením prostredia PowerShell.
Vytvorenie novej databázy SQL cez REST API
Tento príklad skript používa Connect-AzAccount
alias , alias na výzvu az login
na zadanie poverení. Tieto poverenia používa na získanie prístupového tokenu, ktorý sa používa na volania rozhrania REST API. SQLCMD používa kontext konta , ktoré bolo poskytnuté funkcii Connect-AzAccount
.
Skript vytvorí databázu s názvom s aliasom prihláseného používateľa a dátumom. Rozhranie REST API v súčasnosti nevráti stav, takže musíme vytvoriť slučku a skontrolovať, či sa má databáza vytvoriť. Po vytvorení databázy sa funkcia SQLCMD použije na vytvorenie niektorých objektov a následné dotazovanie na ich existenciu. Nakoniec databázu odstránime.
V nasledujúcom skripte nahraďte <your workspace id>
svoje ID pracovného priestoru služby Fabric. ID pracovného priestoru nájdete Napríklad 11aa111-a11a-1111-1abc-aa1111aaaa
v .https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/
Tento skript popisuje:
- Načítajte prístupový token pomocou
Get-AzAccessToken a ho skonvertujte zo zabezpečeného reťazca . Ak používate prostredie PowerShell 7, možnosť ConvertFrom-SecureString. - Vytvorte novú databázu SQL pomocou položky – vytvoriť rozhranie API položky.
- Uviesť zoznam všetkých databáz SQL v pracovnom priestore služby Fabric.
- Pripojte sa k databáze pomocou SQLCMD, čím spustíte skript na vytvorenie objektu.
- Odstránenie databázy pomocou položiek – odstrániť rozhranie API položky.
Import-Module Az.Accounts
Connect-AzAccount
$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
)'
#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)
}