Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:✅bazy danych SQL w usłudze Microsoft Fabric
Za pomocą interfejsu API REST sieci szkieletowej można wdrażać zasoby i zarządzać nimi, dołączać bazy danych SQL w sieci szkieletowej.
W tym artykule i przykładowym skryscie pokazano, jak używać programu PowerShell do wywoływania interfejsu API REST sieci szkieletowej w celu wdrożenia bazy danych SQL Fabric.
Wymagania wstępne
- Potrzebna jest istniejąca pojemność Fabric. Jeśli tego nie zrobisz, uruchom wersję próbną usługi Fabric.
- Możesz użyć istniejącego obszaru roboczego lub utworzyć nowy obszar roboczy 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 sqlcmdw systemie Windows, aby zainstalować. W przypadku innych systemów operacyjnych zobacz aka.ms/go-sqlcmd. - PowerShell 5.1 lub PowerShell 7.4 lub nowszy
- Moduł Az programu PowerShell. Uruchom polecenie
Install-Module azw programie PowerShell, aby zainstalować.
Tworzenie nowej bazy danych SQL za pomocą interfejsu API REST
W tym przykładowym skrypcie użyto Connect-AzAccount, aliasu dla az login, aby wyświetlić monit o podanie poświadczeń. Używa tych poświadczeń do uzyskania tokenu dostępu do użycia na potrzeby wywołań interfejsu API REST. SQLCMD używa kontekstu konta, które zostało przypisane 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 została 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 https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/.
Ten skrypt pokazuje:
- Pobierz token dostępu przy użyciu Get-AzAccessToken i przekonwertuj go z bezpiecznego ciągu. Jeśli używasz programu PowerShell 7, ConvertFrom-SecureString jest również opcją.
- Utwórz nową bazę danych SQL przy użyciu Items — Create Item API.
- Wyświetl listę wszystkich baz danych SQL w obszarze roboczym Fabric.
- Połącz się z bazą danych za pomocą SQLCMD, aby uruchomić skrypt w celu utworzenia obiektu.
- Usuń elementy z bazy danych przy użyciu interfejsu API - Delete Item.
Import-Module Az.Accounts
az login
$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
);
insert into test2 values (1);
insert into test2 values (2);
insert into test2 values (3);
select * from test2;'
#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)
}