Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:✅SQL-databas i Microsoft Fabric
Du kan använda REST-API:et för infrastrukturresurser för att distribuera och hantera resurser, inklusive SQL-databaser i Infrastrukturresurser.
Den här artikeln och exempelskriptet visar hur du använder PowerShell för att anropa Fabric REST-API:et för att distribuera en Fabric SQL-databas.
Förutsättningar
- Du behöver en befintlig Fabric-kapacitet. Om du inte gör det, starta en Fabric-prenumeration.
- Du kan använda en befintlig arbetsyta eller skapa en ny Fabric-arbetsyta.
- Du måste vara medlem i administratörs- eller medlemsrollerna för arbetsytan för att skapa en SQL-databas.
- Installera golang-versionen av SQLCMD. Kör
winget install sqlcmdpå Windows för att installera. För andra operativsystem, se aka.ms/go-sqlcmd. - PowerShell 5.1 eller PowerShell 7.4 och senare
- Az PowerShell-modulen. Kör
Install-Module azi PowerShell för att installera.
Skapa en ny SQL-databas via REST API
Det här exempelskriptet använder Connect-AzAccount, ett alias az login för för att fråga efter autentiseringsuppgifter. Den använder dessa autentiseringsuppgifter för att hämta en åtkomsttoken som ska användas för REST API-anropen. SQLCMD använder kontexten för det konto som gavs till Connect-AzAccount.
Skriptet skapar en databas namngiven med den inloggade användarens alias och datumet. Rest-API:et returnerar för närvarande inte någon status, så vi måste loopa och söka efter databasen som ska skapas. När databasen har skapats används SQLCMD för att skapa vissa objekt och sedan fråga efter deras existens. Slutligen tar vi bort databasen.
I följande skript ersätter du <your workspace id> med ditt Fabric arbetsyte-ID. Du hittar enkelt ID:t för en arbetsyta i URL:en, det är den unika strängen inuti två / tecken efter /groups/ i webbläsarfönstret. Till exempel 11aa111-a11a-1111-1abc-aa1111aaaa i https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/.
Det här skriptet visar:
- Hämta en åtkomsttoken med Get-AzAccessToken och konvertera den från en säker sträng. Om du använder PowerShell 7 är ConvertFrom-SecureString också ett alternativ.
- Skapa en ny SQL-databas med hjälp av Objekt – Skapa objekt-API.
- Lista alla SQL-databaser i en Fabric-arbetsyta.
- Anslut till databasen med SQLCMD- för att köra ett skript för att skapa ett objekt.
- Ta bort databasen med hjälp av Objekt – Ta bort objekt-API.
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. Connect 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)
}
Databaskollation
Som standard skapas databasen med skiftlägesokänslig sortering SQL_Latin1_General_CP1_CI_AS.
Databassortering kan inte ändras efter skapandet, men sortering på enskilda kolumner stöds.
När du skapar en SQL-databas med REST-API:et kan du ange sorteringen i PowerShell. Lägg till en egenskap med namnet creationPayload i $body hashtable. Egenskapen collation innehåller sorteringsnamnet, till exempel:
$collation = 'Latin1_General_100_BIN2_UTF8' # Desired collation name
$body = @{
displayName = $matches[0] + (Get-Date -Format "MMddyyyy")
type = "SQLDatabase"
description = "Created using public api"
creationPayload = @{
collation = $collation
creationMode = "new"
}
}