Een SQL-database maken in Microsoft Fabric via REST API
Van toepassing op:✅SQL-database in Microsoft Fabric
Het Fabric-platform heeft een uitgebreide set REST API's die kunnen worden gebruikt voor het implementeren en beheren van resources. Deze API's kunnen worden gebruikt om Fabric SQL-databases te implementeren. Dit artikel en voorbeeldscript laten een eenvoudig PowerShell-script zien dat kan worden gebruikt om een Fabric SQL-database te implementeren en er gegevens aan toe te voegen.
Vereisten
- U hebt een bestaande infrastructuurcapaciteit nodig. Als u dat niet doet, start u een Fabric-proefversie.
- Zorg ervoor dat u SQL-database in Fabric inschakelt met behulp van tenantinstellingen voor de beheerportal.
- Maak een nieuwe werkruimte of gebruik een bestaande Fabric-werkruimte.
- U moet lid zijn van de beheerders- of lidrollen voor de werkruimte om een SQL-database te maken.
- Installeer de golang-versie van SQLCMD. Voer
winget install sqlcmd
uit op Windows om te installeren. Zie aka.ms/go-sqlcmd voor andere besturingssystemen. - De Az PowerShell-module. Voer
Install-Module az
uit in PowerShell om te installeren.
Een nieuwe SQL-database maken via REST API
In dit voorbeeldscript wordt Connect-AzAccount
een alias gebruikt om az login
om referenties te vragen. Vervolgens worden de referenties gebruikt om een toegangstoken te verkrijgen dat wordt gebruikt voor de REST API-aanroepen. SQLCMD maakt gebruik van de context van het account dat is gegeven aan Connect-AzAccount
.
Het script maakt een database met de naam met de alias van de aangemelde gebruiker en de datum. Momenteel retourneert de REST API geen status, dus we moeten lus uitvoeren en controleren of de database moet worden gemaakt. Nadat de database is gemaakt, wordt SQLCMD gebruikt om enkele objecten te maken en vervolgens te zoeken naar hun bestaan. Ten slotte verwijderen we de database.
Vervang in het volgende script door <your workspace id>
de id van uw Fabric-werkruimte. U kunt de id van een werkruimte gemakkelijk vinden in de URL. Dit is de unieke tekenreeks binnen twee /
tekens na /groups/
in uw browservenster. Bijvoorbeeld 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
}
Vermeld nu de databases in de werkruimte om de nieuwe SQL-database te zien.
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)
U kunt ook T-sQL-instructies uitvoeren via SQLCMD- en REST API-aanroepen. In dit volgende voorbeeldscript maken we enkele 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
Resources opschonen
U kunt de database desgewenst ook verwijderen met behulp van een REST API-aanroep.
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.'