Membuat database SQL di Microsoft Fabric melalui REST API
Berlaku untuk:✅Database SQL di Microsoft Fabric
Platform Fabric memiliki sekumpulan API REST yang kaya yang dapat digunakan untuk menyebarkan dan mengelola sumber daya. API tersebut dapat digunakan untuk menyebarkan database Fabric SQL. Artikel ini dan contoh skrip menunjukkan skrip PowerShell dasar yang dapat digunakan untuk menyebarkan database Fabric SQL dan menambahkan data ke dalamnya.
Prasyarat
- Anda memerlukan kapasitas Fabric yang ada. Jika tidak, mulai uji coba Fabric.
- Pastikan Anda Mengaktifkan database SQL di Fabric menggunakan pengaturan penyewa Portal Admin.
- Buat ruang kerja baru atau gunakan ruang kerja Fabric yang ada.
- Anda harus menjadi anggota peran Admin atau Anggota untuk ruang kerja guna membuat database SQL.
- Instal versi golang SQLCMD. Jalankan
winget install sqlcmd
pada Windows untuk menginstal. Untuk sistem operasi lainnya, lihat aka.ms/go-sqlcmd. - Modul Az PowerShell. Jalankan
Install-Module az
di PowerShell untuk menginstal.
Membuat database SQL baru melalui REST API
Contoh skrip ini menggunakan Connect-AzAccount
, alias az login
untuk meminta kredensial. Ini menggunakan kredensial tersebut untuk mendapatkan token akses yang akan digunakan untuk panggilan REST API. SQLCMD menggunakan konteks akun yang diberikan kepada Connect-AzAccount
.
Skrip membuat database bernama dengan alias pengguna yang masuk dan tanggal. Saat ini, REST API tidak mengembalikan status sehingga kita harus mengulang dan memeriksa database yang akan dibuat. Setelah database dibuat, SQLCMD digunakan untuk membuat beberapa objek lalu mengkueri keberadaannya. Akhirnya, kita menghapus database.
Dalam skrip berikut, ganti <your workspace id>
dengan ID ruang kerja Fabric Anda. Anda dapat menemukan ID ruang kerja dengan mudah di URL, ini adalah string unik di dalam dua /
karakter setelah /groups/
di jendela browser Anda. Misalnya, 11aa111-a11a-1111-1abc-aa1111aaaa
di https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/
.
Skrip ini menunjukkan:
- Ambil token akses menggunakan Get-AzAccessToken dan mengonversinya dari string aman. Jika menggunakan PowerShell 7, ConvertFrom-SecureString juga merupakan opsi.
- Buat database SQL baru menggunakan Item - Buat ITEM API.
- Mencantumkan semua database SQL di ruang kerja Fabric.
- Sambungkan ke database dengan SQLCMD
untuk menjalankan skrip untuk membuat objek. - Hapus database menggunakan Item - Hapus ITEM 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)
}