แชร์ผ่าน


สร้างฐานข้อมูล SQL ใน Microsoft Fabric ผ่าน REST API

นําไปใช้กับ:ฐานข้อมูล SQL ใน Microsoft Fabric

แพลตฟอร์ม Fabric มีชุด REST API ที่หลากหลายที่สามารถใช้เพื่อปรับใช้และจัดการทรัพยากร API เหล่านั้นสามารถใช้เพื่อปรับใช้ฐานข้อมูล Fabric SQL ได้ บทความนี้และสคริปต์ตัวอย่างสาธิตสคริปต์ PowerShell พื้นฐานที่สามารถใช้เพื่อปรับใช้ฐานข้อมูล Fabric SQL และเพิ่มข้อมูลลงในนั้น

ข้อกำหนดเบื้องต้น

สร้างฐานข้อมูล 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.'