Del via


Opret en SQL-database i Microsoft Fabric via REST API

Gælder for:SQL-database i Microsoft Fabric

Fabric-platformen har et omfattende sæt REST API'er, der kan bruges til at udrulle og administrere ressourcer. Disse API'er kan bruges til at installere Fabric SQL-databaser. Denne artikel og eksempelscript demonstrerer et grundlæggende PowerShell-script, der kan bruges til at udrulle en Fabric SQL-database og føje data til den.

Forudsætninger

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:

  1. 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.
  2. Opret en ny SQL-database ved hjælp af Items – Opret element-API-.
  3. Vis alle SQL-databaser i et Fabric-arbejdsområde.
  4. Opret forbindelse til databasen med SQLCMD- for at køre et script for at oprette et objekt.
  5. Slet databasen ved hjælp af api'enElementer – Slet element.
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)
}