แชร์ผ่าน


เริ่มและหยุดการมิเรอร์ฐานข้อมูล SQL ด้วย Fabric REST API

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

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

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

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

หยุดการมิเรอร์ฐานข้อมูล SQL ไปยัง OneLake ใน Fabric

ตัวอย่าง PowerShell ต่อไปนี้หยุดการมิเรอร์ฐานข้อมูล SQL ไปยัง OneLake ใน Fabric

สคริปต์ตัวอย่างนี้ใช้ Connect-AzAccountนามแฝงของ az login เพื่อพร้อมท์สําหรับข้อมูลประจําตัว ซึ่งใช้ข้อมูลประจําตัวเหล่านั้นเพื่อขอรับโทเค็นการเข้าถึงเพื่อใช้สําหรับการเรียกใช้ REST API SQLCMD ใช้บริบทของบัญชีที่มอบให้Connect-AzAccount

ในสคริปต์ต่อไปนี้ คุณต้องระบุรหัสพื้นที่ทํางานและรหัสฐานข้อมูล ทั้งสองสามารถพบได้ใน URL https://powerbi.com/groups/<fabric_workspace_id>/sqldatabases/<fabric_sql_database_id> สตริงแรกใน URL คือ ID พื้นที่ทํางาน Fabric และสตริงที่สองคือ ID ฐานข้อมูล SQL

  • แทนที่ <your workspace id> ด้วยรหัสพื้นที่ทํางาน Fabric ของคุณ คุณสามารถ ค้นหา ID ของพื้นที่ทํางาน ได้อย่างง่ายดายใน URL ซึ่งเป็นสตริงที่ไม่ซ้ํากันภายในสอง / อักขระหลังจาก /groups/ ในหน้าต่างเบราว์เซอร์ของคุณ
  • แทนที่ <your database id> ด้วยฐานข้อมูล SQL ของคุณในรหัสฐานข้อมูล Fabric คุณสามารถค้นหา ID ของรายการฐานข้อมูลได้อย่างง่ายดายใน URL ซึ่งเป็นสตริงที่ไม่ซ้ํากันภายในอักขระสอง / ตัวหลังจาก /sqldatabases/ ในหน้าต่างเบราว์เซอร์ของคุณ

สคริปต์นี้สาธิต:

  1. เรียกใช้โทเค็นการเข้าถึงโดยใช้ Get-AzAccessToken และ แปลงจากสตริงที่ปลอดภัย ถ้าใช้ PowerShell 7 ConvertFrom-SecureString ก็เป็นตัวเลือกเช่นกัน
  2. การเรียก API แบบประกอบ
  3. เรียกใช้ API
Import-Module Az.Accounts

az login

$workspaceid = '<your workspace id>' # Find in the URL
$databaseid = '<your database id>' # Find in the URL

$headers = $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

$stopMirroringUri = "https://api.fabric.microsoft.com/v1/workspaces/$workspaceid/sqlDatabases/$databaseid/stopMirroring"

$parameters = @{
        Method="Post"
        Headers=$headers
        Uri = $stopMirroringUri
    }

Invoke-RestMethod @parameters -ErrorAction Stop

 } finally {
    # The following lines ensure that sensitive data is not left in memory.
    $headers = [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
}

เริ่มการมิเรอร์ฐานข้อมูล SQL ไปยัง OneLake ใน Fabric

ตัวอย่าง PowerShell ต่อไปนี้เริ่มการมิเรอร์ฐานข้อมูล SQL ไปยัง OneLake ใน Fabric

สคริปต์ตัวอย่างนี้ใช้ Connect-AzAccountนามแฝงของ az login เพื่อพร้อมท์สําหรับข้อมูลประจําตัว ซึ่งใช้ข้อมูลประจําตัวเหล่านั้นเพื่อขอรับโทเค็นการเข้าถึงเพื่อใช้สําหรับการเรียกใช้ REST API SQLCMD ใช้บริบทของบัญชีที่มอบให้Connect-AzAccount

ในสคริปต์ต่อไปนี้ ให้แทนที่ <your workspace id> ด้วย ID พื้นที่ทํางาน Fabric ของคุณ คุณสามารถ ค้นหา ID ของพื้นที่ทํางาน ได้อย่างง่ายดายใน URL ซึ่งเป็นสตริงที่ไม่ซ้ํากันภายในสอง / อักขระหลังจาก /groups/ ในหน้าต่างเบราว์เซอร์ของคุณ ตัวอย่างเช่น 11aa111-a11a-1111-1abc-aa1111aaaa ในhttps://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/

สคริปต์นี้สาธิต:

  1. เรียกใช้โทเค็นการเข้าถึงโดยใช้ Get-AzAccessToken และ แปลงจากสตริงที่ปลอดภัย ถ้าใช้ PowerShell 7 ConvertFrom-SecureString ก็เป็นตัวเลือกเช่นกัน
  2. การเรียก API แบบประกอบ
  3. เรียกใช้ API
Import-Module Az.Accounts

az login

$workspaceid = '<your workspace id>' # Find in the URL
$databaseid = '<your database id>' # Find in the URL

$headers = $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

$startMirroringUri = "https://api.fabric.microsoft.com/v1/workspaces/$workspaceid/sqlDatabases/$databaseid/startMirroring"

$parameters = @{
        Method="Post"
        Headers=$headers
        Uri = $startMirroringUri
    }

Invoke-RestMethod @parameters -ErrorAction Stop

 } finally {
    # The following lines ensure that sensitive data is not left in memory.
    $headers = [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
}