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. Anschließend werden die Anmeldeinformationen verwendet, um ein Zugriffstoken abzurufen, das für die REST-API-Aufrufe verwendet wird. 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/
.
Import-Module Az
Connect-AzAccount
$access_token = (Get-AzAccessToken -ResourceUrl https://analysis.windows.net/powerbi/api)
$headers = @{
Authorization = $access_token.Type + ' ' + $access_token.Token
}
$workspaceid = '<your workspace id>'
$databaseid = $null
$responseHeaders = $null
$access_token.UserId -match('^[^@]+') | Out-Null
$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
}
Listen Sie nun die Datenbanken im Arbeitsbereich auf, um die neue SQL-Datenbank anzuzeigen.
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)
Sie können T-SQL-Skriptanweisungen auch über SQLCMD- und REST-API-Aufrufe ausführen. In diesem nächsten Beispielskript erstellen wir einige Tabellen.
Write-Host '...Creating a table.'
# this script requires the golang version of SQLCMD. Run 'winget install sqlcmd' on a Windows desktop to install. For other operating systems, visit aka.ms/go-sqlcmd
sqlcmd.exe -S $databaseProperties.ServerFqdn -d $databaseProperties.DatabaseName -G -Q 'create table test2
(
id int
)'
Write-Host '...Query sys.tables to confirm create.'
sqlcmd.exe -S $databaseProperties.ServerFqdn -d $databaseProperties.DatabaseName -G -Q 'SELECT * FROM sys.tables'
Invoke-RestMethod -Headers $headers -Uri https://api.fabric.microsoft.com/v1/workspaces/$($workspaceid)/items?type=SQlDatabase | select -ExpandProperty Value | ft
Bereinigen von Ressourcen
Optional können Sie die Datenbank auch mithilfe eines REST-API-Aufrufs löschen.
Write-Host 'Deleting 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 'Deleted database.'