Поделиться через


Запуск и остановка зеркального отображения базы данных SQL с помощью REST API Fabric

Применимо к:База данных SQL в Microsoft Fabric

Можно использовать Fabric REST API для запуска и остановки зеркалирования из базы данных SQL в OneLake в Fabric. В этой статье и примере скрипта показано, как использовать PowerShell для вызова REST API Fabric для запуска или остановки зеркального отображения.

Репликация базы данных 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-адресе — идентификатор рабочей области Fabric, а вторая строка — идентификатор базы данных SQL.

  • Замените <your workspace id> идентификатором рабочего пространства Fabric. Идентификатор рабочей области можно легко найти в URL-адресе, это уникальная строка внутри двух / символов после /groups/ в окне браузера.
  • Замените <your database id> на SQL базу данных в идентификаторе базы данных Fabric. Идентификатор элемента базы данных можно легко найти в 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> идентификатор рабочей области Fabric. Идентификатор рабочей области можно легко найти в 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)
}