Condividi tramite


Avviare e arrestare il mirroring del database SQL con l'API REST di Fabric

si applica a:database SQL in Microsoft Fabric

È possibile usare l'API REST di Fabric per avviare e arrestare il mirroring da un database SQL a OneLake in Fabric. Questo articolo e uno script di esempio illustrano come usare PowerShell per chiamare l'API REST di Fabric per avviare o interrompere il mirroring.

Il mirroring del database SQL in OneLake è sempre in esecuzione, per impostazione predefinita. Esistono scenari in cui potrebbe essere necessario arrestare il mirroring per il database SQL in Fabric. Ad esempio, per abilitare la creazione di indici di colonne cluster su una tabella esistente, i quali non possono essere creati durante l'esecuzione del mirroring.

Prerequisiti

Interrompere il processo di mirroring del database SQL verso OneLake in Fabric

Gli esempi di PowerShell seguenti arrestano il mirroring di un database SQL in OneLake in Fabric.

Questo script di esempio usa Connect-AzAccount, un alias di az login per richiedere le credenziali. Usa queste credenziali per ottenere un token di accesso da usare per le chiamate API REST. SQLCMD usa il contesto dell'account assegnato a Connect-AzAccount.

Nello script seguente è necessario specificare l'ID e l'ID database dell'area di lavoro. Entrambi sono disponibili nell'URL. https://powerbi.com/groups/<fabric_workspace_id>/sqldatabases/<fabric_sql_database_id>. La prima stringa dell'URL è l'ID dell'area di lavoro Fabric e la seconda è l'ID del database SQL.

  • Sostituire <your workspace id> con l'ID dell'area di lavoro Fabric. È possibile trovare facilmente l'ID di un'area di lavoro nell'URL, ovvero la stringa univoca all'interno di due / caratteri dopo /groups/ nella finestra del browser.
  • Sostituire <your database id> con il database SQL nell'ID del database Fabric. È possibile trovare facilmente l'ID dell'elemento di database nell'URL, ovvero la stringa univoca all'interno di due / caratteri dopo /sqldatabases/ nella finestra del browser.

Questo script illustra:

  1. Recupera un token di accesso usando Get-AzAccessToken e converti il token da una stringa protetta. Se si usa PowerShell 7, ConvertFrom-SecureString è anche un'opzione.
  2. Assemblare la chiamata API.
  3. Richiamare la chiamata 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)
}

Avviare la replicazione del database SQL su OneLake in Fabric

Gli esempi di PowerShell seguenti avviano il mirroring di un database SQL in OneLake in Fabric.

Questo script di esempio usa Connect-AzAccount, un alias di az login per richiedere le credenziali. Usa queste credenziali per ottenere un token di accesso da usare per le chiamate API REST. SQLCMD usa il contesto dell'account assegnato a Connect-AzAccount.

Nel seguente script, sostituire <your workspace id> con l'ID dell'area di lavoro Fabric. È possibile trovare facilmente l'ID di un'area di lavoro nell'URL, ovvero la stringa univoca all'interno di due / caratteri dopo /groups/ nella finestra del browser. Ad esempio, 11aa111-a11a-1111-1abc-aa1111aaaa in https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/.

Questo script illustra:

  1. Recupera un token di accesso usando Get-AzAccessToken e converti il token da una stringa protetta. Se si usa PowerShell 7, ConvertFrom-SecureString è anche un'opzione.
  2. Assemblare la chiamata API.
  3. Richiamare la chiamata 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)
}