Erstellen einer SQL-Datenbank in Microsoft Fabric mithilfe der REST-API
Gilt für:✅SQL-Datenbank in Microsoft Fabric
Die Fabric-Plattform verfügt über eine Vielzahl von REST-APIs, die zum Bereitstellen und Verwalten von Ressourcen verwendet werden können. Diese APIs können zum Bereitstellen von Fabric SQL-Datenbanken verwendet werden. In diesem Artikel und Beispielskript wird ein einfaches PowerShell-Skript veranschaulicht, das zum Bereitstellen einer Fabric SQL-Datenbank und zum Hinzufügen von Daten zur Fabric SQL-Datenbank verwendet werden kann.
Voraussetzungen
- Sie benötigen eine vorhandene Fabric-Kapazität. Falls dies nicht der Fall ist, können Sie eine Fabric-Testversion starten.
- Stellen Sie sicher, dass Sie die SQL-Datenbank in Fabric mithilfe der Mandanteneinstellungen des Verwaltungsportals aktivieren.
- Erstellen Sie einen neuen Arbeitsbereich, oder verwenden Sie einen vorhandenen Fabric-Arbeitsbereich.
- Sie müssen Mitglied der Administrator- oder Mitgliedsrollen für den Arbeitsbereich sein, um eine SQL-Datenbank zu erstellen.
- Installieren Sie die Golang-Version von SQLCMD. Führen Sie
winget install sqlcmd
unter Windows aus, um die Installation auszuführen. Weitere Betriebssysteme finden Sie unter aka.ms/go-sqlcmd. - Das Az PowerShell-Modul. Führen Sie
Install-Module az
in PowerShell aus, um die Installation auszuführen.
Erstellen einer neuen SQL-Datenbank mithilfe der REST-API
Dieses Beispielskript verwendet Connect-AzAccount
, einen Alias von az login
, um zur Eingabe von Anmeldeinformationen aufzufordern. Sie verwendet diese Anmeldeinformationen, um ein Zugriffstoken abzurufen, das für die REST-API-Aufrufe verwendet werden soll. SQLCMD verwendet den Kontext des Kontos, der für Connect-AzAccount
angegeben wurde.
Das Skript erstellt eine Datenbank mit dem Alias des angemeldeten Benutzers und dem Datum als Namen. Derzeit gibt die REST-API keinen Status zurück, daher muss eine Schleife ausgeführt und überprüft werden, ob die Datenbank erstellt werden soll. Nachdem die Datenbank erstellt wurde, wird SQLCMD verwendet, um einige Objekte zu erstellen und dann deren Vorhandensein abzufragen. Schließlich wird die Datenbank gelöscht.
Ersetzen Sie im folgenden Skript <your workspace id>
durch Ihre Fabric-Arbeitsbereichs-ID. Sie können die ID eines Arbeitsbereichs ganz einfach in der URL finden; es ist die eindeutige Zeichenfolge innerhalb von zwei /
-Zeichen nach /groups/
in Ihrem Browserfenster. Beispiel: 11aa111-a11a-1111-1abc-aa1111aaaa
in https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/
.
Dieses Skript veranschaulicht Folgendes:
- Rufen Sie mithilfe von Get-AzAccessToken ein Zugriffstoken ab, und konvertieren Sie es aus einer sicheren Zeichenfolge. Bei Verwendung von PowerShell 7 ist ConvertFrom-SecureString ebenfalls eine Option.
- Erstellen Sie eine neue SQL-Datenbank mithilfe der Items - Create Item API.
- Auflisten aller SQL-Datenbanken in einem Fabric-Arbeitsbereich.
- Stellen Sie eine Verbindung mit der Datenbank mit SQLCMD- her, um ein Skript auszuführen, um ein Objekt zu erstellen.
- Löschen Sie die Datenbank mithilfe der Items - Delete Item 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)
}