Compartilhar via


Iniciar e parar o espelhamento do banco de dados SQL com a API REST do Fabric

Aplica-se a:banco de dados SQL do Microsoft Fabric

Você pode usar a API REST do Fabric para iniciar e parar o espelhamento de um banco de dados SQL para o OneLake no Fabric. Este artigo e o script de exemplo demonstram como usar o PowerShell para chamar a API REST do Fabric para iniciar ou parar o espelhamento.

O espelhamento do banco de dados SQL para o OneLake está sempre em execução, por padrão. Há cenários em que o espelhamento do banco de dados SQL no Fabric pode precisar ser interrompido. Por exemplo, para habilitar a criação de índices de coluna clusterizados em uma tabela existente, que não podem ser criados quando o espelhamento está em execução.

Pré-requisitos

Parar o espelhamento do banco de dados SQL para o OneLake no Fabric

Os exemplos do PowerShell a seguir interrompem o espelhamento de um banco de dados SQL para o OneLake no Fabric.

Este script de exemplo usa Connect-AzAccount, um alias de az login para solicitar credenciais. Ele usa essas credenciais para obter um token de acesso a ser usado para as chamadas à API REST. O SQLCMD usa o contexto da conta que foi fornecida a Connect-AzAccount.

No script a seguir, você precisa fornecer a ID do workspace e a ID do banco de dados. Ambos podem ser encontrados na URL. https://powerbi.com/groups/<fabric_workspace_id>/sqldatabases/<fabric_sql_database_id>. A primeira cadeia de caracteres na URL é a ID do workspace do Fabric e a segunda cadeia de caracteres é a ID do banco de dados SQL.

  • Substitua <your workspace id> pela ID do espaço de trabalho do Fabric. Você pode encontrar o ID de um espaço de trabalho facilmente na URL, é a string exclusiva dentro de dois caracteres / após /groups/ na janela do navegador.
  • Substitua <your database id> pelo seu banco de dados SQL na identificação do banco de dados do Fabric. Você pode encontrar a ID do item de banco de dados facilmente na URL, é a cadeia de caracteres exclusiva dentro de dois / caracteres após /sqldatabases/ na janela do seu navegador.

Este script demonstra:

  1. Recupere um token de acesso usando Get-AzAccessToken e converta-o de uma cadeia de caracteres segura. Se estiver usando o PowerShell 7, ConvertFrom-SecureString também será uma opção.
  2. Montar chamada à API.
  3. Invocar a chamada da 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)
}

Iniciar o espelhamento do banco de dados SQL para o OneLake na Fabric

Os exemplos do PowerShell a seguir iniciam o espelhamento de um banco de dados SQL para o OneLake no Fabric.

Este script de exemplo usa Connect-AzAccount, um alias de az login para solicitar credenciais. Ele usa essas credenciais para obter um token de acesso a ser usado para as chamadas à API REST. O SQLCMD usa o contexto da conta que foi fornecida a Connect-AzAccount.

No script a seguir, substitua <your workspace id> pela ID do workspace do Fabric. Você pode encontrar o ID de um espaço de trabalho facilmente na URL, é a string exclusiva dentro de dois caracteres / após /groups/ na janela do navegador. Por exemplo, 11aa111-a11a-1111-1abc-aa1111aaaa em https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/.

Este script demonstra:

  1. Recupere um token de acesso usando Get-AzAccessToken e converta-o de uma cadeia de caracteres segura. Se estiver usando o PowerShell 7, ConvertFrom-SecureString também será uma opção.
  2. Montar chamada à API.
  3. Realizar chamada à 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)
}