Skapa en SQL-databas i Microsoft Fabric via REST API
Gäller för:✅SQL-databas i Microsoft Fabric
Fabric-plattformen har en omfattande uppsättning REST-API:er som kan användas för att distribuera och hantera resurser. Dessa API:er kan användas för att distribuera Sql-infrastrukturdatabaser. Den här artikeln och exempelskriptet visar ett grundläggande PowerShell-skript som kan användas för att distribuera en Fabric SQL-databas och lägga till data i den.
Förutsättningar
- Du behöver en befintlig infrastrukturkapacitet. Om du inte gör det startar du en fabric-utvärderingsversion.
- Kontrollera att du aktiverar SQL-databas i Infrastrukturresurser med hjälp av klientinställningar för administrationsportalen.
- Skapa en ny arbetsyta eller använd en befintlig infrastrukturarbetsyta.
- Du måste vara medlem i administratörs- eller medlemsrollerna för arbetsytan för att skapa en SQL-databas.
- Installera golang-versionen av SQLCMD. Kör
winget install sqlcmd
på Windows för att installera. Andra operativsystem finns i aka.ms/go-sqlcmd. - Az PowerShell-modulen. Kör
Install-Module az
i PowerShell för att installera.
Skapa en ny SQL-databas via REST API
Det här exempelskriptet använder Connect-AzAccount
, ett alias az login
för för att fråga efter autentiseringsuppgifter. Den använder dessa autentiseringsuppgifter för att hämta en åtkomsttoken som ska användas för REST API-anropen. SQLCMD använder kontexten för det konto som gavs till Connect-AzAccount
.
Skriptet skapar en databas med namnet med den inloggade användarens alias och datumet. Rest-API:et returnerar för närvarande inte någon status, så vi måste loopa och söka efter databasen som ska skapas. När databasen har skapats används SQLCMD för att skapa vissa objekt och sedan fråga efter deras existens. Slutligen tar vi bort databasen.
I följande skript ersätter du <your workspace id>
med ditt Infrastruktur-arbetsyte-ID. Du hittar enkelt ID:t för en arbetsyta i URL:en, det är den unika strängen inuti två /
tecken efter /groups/
i webbläsarfönstret. Till exempel 11aa111-a11a-1111-1abc-aa1111aaaa
i https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/
.
Det här skriptet visar:
- Hämta en åtkomsttoken med Get-AzAccessToken och konvertera den från en säker sträng. Om du använder PowerShell 7 är ConvertFrom-SecureString också ett alternativ.
- Skapa en ny SQL-databas med hjälp av Objekt – Skapa objekt-API.
- Lista alla SQL-databaser i en Fabric-arbetsyta.
- Anslut till databasen med SQLCMD- för att köra ett skript för att skapa ett objekt.
- Ta bort databasen med hjälp av Objekt – Ta bort objekt-API.
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)
}