หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
นําไปใช้กับ:✅ฐานข้อมูล SQL ใน Microsoft Fabric
คุณสามารถใช้ Fabric REST API เพื่อปรับใช้และจัดการทรัพยากร รวมถึงฐานข้อมูล SQL ใน Fabric
บทความนี้และสคริปต์ตัวอย่างสาธิตวิธีการใช้ PowerShell เพื่อเรียกใช้ Fabric REST API เพื่อปรับใช้ฐานข้อมูล Fabric SQL
ข้อกำหนดเบื้องต้น
- คุณต้องมีความจุ Fabric ที่มีอยู่ หากคุณไม่ทําเช่นนี้ ให้ เริ่มการทดลองใช้ Fabric
- ตรวจสอบให้แน่ใจว่าคุณ เปิดใช้งานฐานข้อมูล SQL ใน Fabric โดยใช้การตั้งค่าผู้เช่าพอร์ทัลผู้ดูแลระบบ ถ้าคุณไม่เป็นเช่นนั้น คุณจะได้รับข้อความแสดงข้อผิดพลาดว่า "การสร้างฐานข้อมูล SQL ล้มเหลว"
- คุณสามารถใช้พื้นที่ทํางานที่มีอยู่หรือ สร้างพื้นที่ทํางาน Fabric ใหม่ได้
- คุณต้องเป็นสมาชิกของ บทบาทผู้ดูแลระบบหรือสมาชิกสําหรับพื้นที่ทํางาน เพื่อสร้างฐานข้อมูล SQL
- ติดตั้ง SQLCMD เวอร์ชัน golang เรียกใช้
winget install sqlcmd
บน Windows เพื่อติดตั้ง สําหรับระบบปฏิบัติการอื่น ๆ โปรดดู aka.ms/go-sqlcmd - PowerShell 5.1 หรือ PowerShell 7.4 และใหม่กว่า
- โมดูล 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/
สคริปต์นี้สาธิต:
- เรียกใช้โทเค็นการเข้าถึงโดยใช้ Get-AzAccessToken และ แปลงจากสตริงที่ปลอดภัย ถ้าใช้ PowerShell 7 ConvertFrom-SecureString ก็เป็นตัวเลือกเช่นกัน
- สร้างฐานข้อมูล SQL ใหม่โดยใช้ Items - สร้าง API รายการ
- ทํารายการฐานข้อมูล SQL ทั้งหมดในพื้นที่ทํางาน Fabric
- เชื่อมต่อกับฐานข้อมูลด้วย
SQLCMD เพื่อเรียกใช้สคริปต์เพื่อสร้างวัตถุ - ลบฐานข้อมูลโดยใช้รายการ - ลบรายการ API
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)
}