Criar um banco de dados SQL no Microsoft Fabric por meio da API REST
Aplica-se a:✅Banco de dados SQL no Microsoft Fabric
A plataforma Fabric tem um conjunto avançado de APIs REST que podem ser usadas para implantar e gerenciar recursos. Essas APIs podem ser usadas para implantar bancos de dados SQL de malha. Este artigo e o script de exemplo demonstram um script básico do PowerShell que pode ser usado para implantar um banco de dados SQL de malha e adicionar dados a ele.
Pré-requisitos
- Você precisa de uma capacidade de malha existente. Caso contrário, inicie uma avaliação do Fabric.
- Certifique-se de habilitar o banco de dados SQL no Fabric usando as configurações de locatário do Portal de Administração.
- Crie um novo espaço de trabalho ou use um espaço de trabalho de malha existente.
- Você deve ser membro das funções Administrador ou Membro do espaço de trabalho para criar um banco de dados SQL.
- Instale a versão golang do SQLCMD. Execute
winget install sqlcmd
no Windows para instalar. Para outros sistemas operacionais, consulte aka.ms/go-sqlcmd. - O módulo Az PowerShell. Execute
Install-Module az
no PowerShell para instalar.
Criar um novo banco de dados SQL via API REST
Este script de exemplo usa Connect-AzAccount
, um alias de az login
para solicitar credenciais. Ele usa essas credenciais para obter um token de acesso a ser usado para as chamadas da API REST. SQLCMD usa o contexto da conta que foi dada ao Connect-AzAccount
.
O script cria um banco de dados nomeado com o alias do usuário conectado e a data. Atualmente, a API REST não retorna um status, então devemos fazer loop e verificar se o banco de dados será criado. Depois que o banco de dados é criado, o SQLCMD é usado para criar alguns objetos e, em seguida, consultar sua existência. Finalmente, eliminamos a base de dados.
No script a seguir, substitua <your workspace id>
pela ID do espaço de trabalho Malha. Você pode encontrar o ID de um espaço de trabalho facilmente no URL, é a cadeia de caracteres exclusiva dentro de dois /
caracteres depois /groups/
na janela do navegador. Por exemplo, 11aa111-a11a-1111-1abc-aa1111aaaa
em https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/
.
Este script demonstra:
- Recupere um token de acesso utilizando o comando Get-AzAccessToken e, em seguida, converta-o de uma cadeia de caracteres segura. Se estiver a usar o PowerShell 7, ConvertFrom-SecureString também é uma opção.
- Crie uma nova base de dados SQL usando a Itens - Criar Item API.
- Liste todas as bases de dados SQL num Fabric workspace.
- Conecte-se ao banco de dados com SQLCMD para executar um script para criar um objeto.
- Exclua a base de dados usando a API de Eliminação de Item Itens -.
Import-Module Az.Accounts
Connect-AzAccount
$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
)'
#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)
}