Freigeben über


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

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.'