Создание базы данных SQL в Microsoft Fabric с помощью REST API
Применимо к:✅базе данных SQL в Microsoft Fabric
Платформа Fabric имеет широкий набор ИНТЕРФЕЙСов REST API, которые можно использовать для развертывания ресурсов и управления ими. Эти API можно использовать для развертывания баз данных SQL Fabric. В этой статье и примере скрипта демонстрируется базовый скрипт PowerShell, который можно использовать для развертывания базы данных SQL Fabric и добавления данных в нее.
Необходимые компоненты
- Вам нужна существующая емкость Fabric. Если вы этого не сделали, запустите пробную версию Fabric.
- Убедитесь, что вы включите базу данных SQL в Fabric с помощью параметров клиента портала администрирования.
- Создайте новую рабочую область или используйте существующую рабочую область Fabric.
- Для создания базы данных SQL необходимо быть членом ролей администратора или члена рабочей области.
- Установите версию golang SQLCMD. Запустите
winget install sqlcmd
в Windows, чтобы установить. Сведения о других операционных системах см. в aka.ms/go-sqlcmd. - Модуль Az PowerShell. Запустите
Install-Module az
в PowerShell, чтобы установить.
Создание базы данных SQL с помощью REST API
В этом примере скрипта используется Connect-AzAccount
псевдоним az login
для запроса учетных данных. Он использует эти учетные данные для получения маркера доступа для вызовов REST API. SQLCMD использует контекст учетной записи, которая была передана Connect-AzAccount
.
Скрипт создает базу данных с именем с псевдонимом пользователя, вошедшего в систему, и датой. В настоящее время REST API не возвращает состояние, поэтому необходимо выполнить цикл и проверить, нужно ли создать базу данных. После создания базы данных SQLCMD используется для создания некоторых объектов, а затем запроса на их существование. Наконец, мы удаляем базу данных.
В следующем скрипте замените <your workspace id>
идентификатор рабочей области Fabric. Идентификатор рабочей области можно легко найти в URL-адресе, это уникальная строка внутри двух /
символов после /groups/
в окне браузера. Например, 11aa111-a11a-1111-1abc-aa1111aaaa
в https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/
.
Этот скрипт демонстрирует следующее:
- Получите маркер доступа с помощью Get-AzAccessToken и преобразуйте его из безопасной строки. При использовании PowerShell 7 ConvertFrom-SecureString также является вариантом.
- Создайте базу данных SQL с помощью элементов — создание API элементов.
- Список всех баз данных SQL в рабочей области Fabric.
- Подключитесь к базе данных с SQLCMD для запуска скрипта для создания объекта.
- Удалите базу данных с помощью элементов —API удаления элементов.
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)
}