Κοινή χρήση μέσω


Δημιουργία βάσης δεδομένων SQL στο Microsoft Fabric μέσω API REST

Ισχύει για:Βάση δεδομένων SQL στο Microsoft Fabric

Η πλατφόρμα Fabric διαθέτει ένα πλούσιο σύνολο API REST που μπορούν να χρησιμοποιηθούν για την ανάπτυξη και τη διαχείριση πόρων. Αυτά τα API μπορούν να χρησιμοποιηθούν για την ανάπτυξη βάσεων δεδομένων SQL Fabric. Αυτό το άρθρο και δείγμα δέσμης ενεργειών παρουσιάζουν μια βασική δέσμη ενεργειών PowerShell που μπορεί να χρησιμοποιηθεί για την ανάπτυξη μιας βάσης δεδομένων SQL Fabric και την προσθήκη δεδομένων σε αυτήν.

Προαπαιτούμενα στοιχεία

Δημιουργία νέας βάσης δεδομένων SQL μέσω API REST

Αυτό το παράδειγμα δέσμης Connect-AzAccountενεργειών χρησιμοποιεί το , ένα ψευδώνυμο για az login την προτροπή για διαπιστευτήρια. Χρησιμοποιεί αυτά τα διαπιστευτήρια για να αποκτήσει ένα διακριτικό πρόσβασης για χρήση στις κλήσεις REST API. Η SQLCMD χρησιμοποιεί το περιβάλλον του λογαριασμού που δόθηκε στο Connect-AzAccount.

Η δέσμη ενεργειών δημιουργεί μια βάση δεδομένων με το όνομα του συνδεδεμένου χρήστη και την ημερομηνία. Προς το παρόν, το REST API δεν επιστρέφει μια κατάσταση, επομένως πρέπει να κάνουμε βρόχο και να ελέγξουμε για τη δημιουργία της βάσης δεδομένων. Μετά τη δημιουργία της βάσης δεδομένων, χρησιμοποιείται η SQLCMD για τη δημιουργία ορισμένων αντικειμένων και, στη συνέχεια, το ερώτημα για την ύπαρξή τους. Τέλος, διαγράφουμε τη βάση δεδομένων.

Στην ακόλουθη δέσμη ενεργειών, αντικαταστήστε <your workspace id> το με το αναγνωριστικό χώρου εργασίας Fabric σας. Μπορείτε να βρείτε εύκολα το αναγνωριστικό ενός χώρου εργασίας στη διεύθυνση URL, είναι η μοναδική συμβολοσειρά μέσα σε δύο / χαρακτήρες μετά /groups/ από το παράθυρο του προγράμματος περιήγησης. Για παράδειγμα, 11aa111-a11a-1111-1abc-aa1111aaaa στο https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/.

Αυτή η δέσμη ενεργειών παρουσιάζει τα εξής:

  1. Ανακτήστε ένα διακριτικό πρόσβασης χρησιμοποιώντας Get-AzAccessToken και μετατρέψτε το από μια ασφαλή συμβολοσειρά. Εάν χρησιμοποιείτε το PowerShell 7, το ConvertFrom-SecureString είναι επίσης μια επιλογή.
  2. Δημιουργήστε μια νέα βάση δεδομένων SQL χρησιμοποιώντας το Items - Δημιουργία API στοιχείου.
  3. Παράθεση όλων των βάσεων δεδομένων SQL σε έναν χώρο εργασίας Fabric.
  4. Συνδεθείτε στη βάση δεδομένων με SQLCMD για να εκτελέσετε μια δέσμη ενεργειών για να δημιουργήσετε ένα αντικείμενο.
  5. Διαγράψτε τη βάση δεδομένων χρησιμοποιώντας το Items - Διαγραφή 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)
}