Tworzenie bazy danych SQL w usłudze Microsoft Fabric za pośrednictwem interfejsu API REST
Dotyczy bazy danych:✅SQL w usłudze Microsoft Fabric
Platforma sieć szkieletowa ma bogaty zestaw interfejsów API REST, których można użyć do wdrażania zasobów i zarządzania nimi. Te interfejsy API mogą służyć do wdrażania baz danych SQL sieci szkieletowej. Ten artykuł i przykładowy skrypt przedstawiają podstawowy skrypt programu PowerShell, który może służyć do wdrażania bazy danych SQL Fabric i dodawania do niej danych.
Wymagania wstępne
- Potrzebna jest istniejąca pojemność sieci szkieletowej. Jeśli tego nie zrobisz, uruchom wersję próbną usługi Fabric.
- Upewnij się, że włączono bazę danych SQL w sieci szkieletowej przy użyciu ustawień dzierżawy portalu administracyjnego.
- Utwórz nowy obszar roboczy lub użyj istniejącego obszaru roboczego usługi Fabric.
- Aby utworzyć bazę danych SQL, musisz być członkiem ról administratora lub członka obszaru roboczego.
- Zainstaluj wersję języka golang programu SQLCMD. Uruchom polecenie
winget install sqlcmd
w systemie Windows, aby zainstalować. W przypadku innych systemów operacyjnych zobacz aka.ms/go-sqlcmd. - Moduł Az programu PowerShell. Uruchom polecenie
Install-Module az
w programie PowerShell, aby zainstalować.
Tworzenie nowej bazy danych SQL za pomocą interfejsu API REST
W tym przykładowym skrypcie użyto Connect-AzAccount
aliasu az login
, aby wyświetlić monit o podanie poświadczeń. Następnie używa poświadczeń do uzyskania tokenu dostępu, który będzie używany do wywołań interfejsu API REST. SqlCMD używa kontekstu konta, które zostało podane do Connect-AzAccount
.
Skrypt tworzy bazę danych o nazwie z aliasem zalogowanego użytkownika i datą. Obecnie interfejs API REST nie zwraca stanu, dlatego musimy wykonać pętlę i sprawdzić, czy baza danych ma zostać utworzona. Po utworzeniu bazy danych usługa SQLCMD jest używana do tworzenia niektórych obiektów, a następnie wykonywania zapytań o ich istnienie. Na koniec usuniemy bazę danych.
W poniższym skrypcie zastąp <your workspace id>
element identyfikatorem obszaru roboczego usługi Fabric. Identyfikator obszaru roboczego można łatwo znaleźć w adresie URL. Jest to unikatowy ciąg w dwóch /
znakach po /groups/
w oknie przeglądarki. Na przykład 11aa111-a11a-1111-1abc-aa1111aaaa
w pliku 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
}
Teraz wyświetl listę baz danych w obszarze roboczym, aby wyświetlić nową bazę danych SQL.
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)
Skrypty T-sQL można również uruchamiać za pomocą wywołań interfejsu API REST i SQLCMD. W następnym przykładowym skrycie utworzymy kilka tabel.
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
Czyszczenie zasobów
Opcjonalnie możesz również usunąć bazę danych przy użyciu wywołania interfejsu API REST.
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.'