Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:✅Database SQL in Microsoft Fabric
È possibile usare l'API REST di Fabric per distribuire e gestire le risorse, inclusi i database SQL in Fabric.
Questo articolo e uno script di esempio illustrano come usare PowerShell per chiamare l'API REST di Fabric per distribuire un database SQL di Fabric.
Prerequisiti
- È necessaria una capacità di Fabric esistente. Se non lo fai, avvia una versione di prova di Fabric.
- È possibile usare un'area di lavoro esistente o creare una nuova area di lavoro infrastruttura.
- Per creare un database SQL, è necessario essere membri dei ruoli Amministratore o Membro per l'area di lavoro .
- Installare la versione golang di SQLCMD. Eseguire
winget install sqlcmdin Windows per l'installazione. Per altri sistemi operativi, vedere aka.ms/go-sqlcmd. - PowerShell 5.1 o PowerShell 7.4 e versioni successive
- Modulo Az PowerShell. Eseguire
Install-Module azin PowerShell per l'installazione.
Creare un nuovo database SQL tramite l'API REST
Questo script di esempio usa Connect-AzAccount, un alias di az login per richiedere le credenziali. Usa queste credenziali per ottenere un token di accesso da usare per le chiamate API REST. SQLCMD usa il contesto dell'account assegnato a Connect-AzAccount.
Lo script crea un database denominato con l'alias dell'utente connesso e la data. Attualmente, l'API REST non restituisce uno stato, quindi è necessario eseguire un ciclo e verificare la presenza del database da creare. Dopo aver creato il database, SQLCMD viene usato per creare alcuni oggetti e quindi eseguire una query sulla loro esistenza. Infine, si elimina il database.
Nel seguente script, sostituire <your workspace id> con l'ID dell'area di lavoro Fabric. È possibile trovare facilmente l'ID di un'area di lavoro nell'URL, ovvero la stringa univoca all'interno di due / caratteri dopo /groups/ nella finestra del browser. Ad esempio, 11aa111-a11a-1111-1abc-aa1111aaaa in https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/.
Questo script illustra:
- Recupera un token di accesso usando Get-AzAccessToken e converti il token da una stringa protetta. Se si usa PowerShell 7, ConvertFrom-SecureString è anche un'opzione.
- Creare un nuovo database SQL, utilizzando l'API Items - Create Item.
- Elenca tutti i database SQL in un'area di lavoro Fabric.
- Connettersi al database con SQLCMD per eseguire uno script per creare un oggetto.
- Elimina il database utilizzando l'API Items - 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)
}