Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőre vonatkozik:✅ SQL-adatbázis a Microsoft Fabricben
A Fabric REST API-val erőforrásokat helyezhet üzembe és kezelhet, sql-adatbázisokat is tartalmazhat a Fabricben.
Ez a cikk és példaszkript bemutatja, hogyan hívhatja meg a Fabric REST API-t a Fabric SQL-adatbázis üzembe helyezéséhez a PowerShell használatával.
Előfeltételek
- Meglévő Fabric kapacitásra van szüksége. Ha még nem tette meg, indítsa el a Fabric próbaverzióját.
- Használhat egy meglévő munkaterületet, vagy létrehozhat egy új Háló-munkaterületet.
- SQL-adatbázis létrehozásához a munkaterület rendszergazdai vagy tagi szerepköreinek tagjának kell lennie.
- Telepítse az SQLCMD golang verzióját. A telepítéshez futtassa a
winget install sqlcmd-t Windows rendszeren. Más operációs rendszerekről lásd: aka.ms/go-sqlcmd. - PowerShell 5.1 vagy PowerShell 7.4 vagy újabb
- Az PowerShell-modul. A telepítéshez futtassa
Install-Module aza PowerShellben.
Új SQL-adatbázis létrehozása REST API-val
Ez a példaszkript Connect-AzAccount-t, a az login álnévet használja a hitelesítő adatok kérésére. Ezekkel a hitelesítő adatokkal szerez be egy hozzáférési jogkivonatot a REST API-hívásokhoz. Az SQLCMD a megadott fiók Connect-AzAccountkörnyezetét használja.
A szkript létrehoz egy adatbázist, amely a bejelentkezett felhasználó aliasával és dátumával van elnevezve. Jelenleg a REST API nem ad vissza státuszt, így ismételten ellenőriznünk kell, hogy az adatbázis már létrejött-e. Az adatbázis létrehozása után az SQLCMD használatával létrehoz néhány objektumot, majd lekérdezi a létezését. Végül töröljük az adatbázist.
Az alábbi szkriptben cserélje le a <your workspace id>-t a Fabric-munkaterület azonosítójával.
A munkaterület azonosítóját könnyen megtalálhatja az URL-címben, ez a böngészőablakban található egyedi sztring, amely két / karakter között helyezkedik el /groups/ után. Például a 11aa111-a11a-1111-1abc-aa1111aaaahttps://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/-ben.
Ez a szkript a következőket mutatja be:
- Hozzáférési token lekérése a Get-AzAccessToken használatával, majd konvertálása egy biztonságos sztringből. PowerShell 7 használata esetén a ConvertFrom-SecureString is egy lehetőség.
- Hozzon létre egy új SQL-adatbázist az Items – Create Item APIhasználatával.
- A Fabric-munkaterület összes SQL-adatbázisának listázása.
- Csatlakozzon az adatbázishoz SQLCMD használatával, hogy szkriptet futtasson egy objektum létrehozásához.
- Törölje az adatbázist az Elemek – Elem törlése APIhasználatával.
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)
}