สร้างฐานข้อมูล SQL ใน Microsoft Fabric ผ่าน REST API
นําไปใช้กับ:✅ฐานข้อมูล SQL ใน Microsoft Fabric
แพลตฟอร์ม Fabric มีชุด REST API ที่หลากหลายที่สามารถใช้เพื่อปรับใช้และจัดการทรัพยากร API เหล่านั้นสามารถใช้เพื่อปรับใช้ฐานข้อมูล Fabric SQL ได้ บทความนี้และสคริปต์ตัวอย่างสาธิตสคริปต์ PowerShell พื้นฐานที่สามารถใช้เพื่อปรับใช้ฐานข้อมูล Fabric SQL และเพิ่มข้อมูลลงในนั้น
ข้อกำหนดเบื้องต้น
- คุณต้องมีความจุ Fabric ที่มีอยู่ หากคุณไม่ทําเช่นนี้ ให้ เริ่มการทดลองใช้ Fabric
- ตรวจสอบให้แน่ใจว่าคุณ เปิดใช้งานฐานข้อมูล SQL ใน Fabric โดยใช้การตั้งค่าผู้เช่าพอร์ทัลผู้ดูแลระบบ
- สร้างพื้นที่ทํางาน ใหม่หรือใช้พื้นที่ทํางาน Fabric ที่มีอยู่
- คุณต้องเป็นสมาชิกของบทบาทผู้ดูแลระบบหรือสมาชิกสําหรับพื้นที่ทํางานเพื่อสร้างฐานข้อมูล SQL
- ติดตั้ง SQLCMD เวอร์ชัน golang เรียกใช้
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>
ด้วย ID พื้นที่ทํางาน Fabric ของคุณ คุณสามารถ ค้นหา ID ของพื้นที่ทํางาน ได้อย่างง่ายดายใน URL ซึ่งเป็นสตริงที่ไม่ซ้ํากันภายในสอง /
อักขระหลังจาก /groups/
ในหน้าต่างเบราว์เซอร์ของคุณ ตัวอย่างเช่น 11aa111-a11a-1111-1abc-aa1111aaaa
ในhttps://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/
Import-Module Az
Connect-AzAccount
$access_token = (Get-AzAccessToken -ResourceUrl https://analysis.windows.net/powerbi/api)
$headers = @{
Authorization = $access_token.Type + ' ' + $access_token.Token
}
$workspaceid = '<your workspace id>'
$databaseid = $null
$responseHeaders = $null
$access_token.UserId -match('^[^@]+') | Out-Null
$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
}
ในตอนนี้ ให้แสดงรายการฐานข้อมูลในพื้นที่ทํางานเพื่อดูฐานข้อมูล SQL ใหม่
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)
คุณยังสามารถเรียกใช้สคริปต์คําสั่ง T-sQL ผ่านการเรียกใช้ SQLCMD และ REST API ในสคริปต์ตัวอย่างถัดไปนี้ เราจะสร้างตารางบางตาราง
Write-Host '...Creating a table.'
# this script requires the golang version of SQLCMD. Run 'winget install sqlcmd' on a Windows desktop to install. For other operating systems, visit aka.ms/go-sqlcmd
sqlcmd.exe -S $databaseProperties.ServerFqdn -d $databaseProperties.DatabaseName -G -Q 'create table test2
(
id int
)'
Write-Host '...Query sys.tables to confirm create.'
sqlcmd.exe -S $databaseProperties.ServerFqdn -d $databaseProperties.DatabaseName -G -Q 'SELECT * FROM sys.tables'
Invoke-RestMethod -Headers $headers -Uri https://api.fabric.microsoft.com/v1/workspaces/$($workspaceid)/items?type=SQlDatabase | select -ExpandProperty Value | ft
ล้างแหล่งข้อมูล
อีกทางหนึ่งคือ คุณสามารถลบฐานข้อมูลโดยใช้การเรียก REST API ได้เช่นกัน
Write-Host 'Deleting 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 'Deleted database.'