Teilen über


Starten und Beenden der SQL-Datenbankspiegelung mit der Fabric-REST-API

Gilt für:SQL-Datenbank in Microsoft Fabric

Sie können die Fabric-REST-API verwenden, um die Spiegelung aus einer SQL-Datenbank auf oneLake in Fabric zu starten und zu beenden. In diesem Artikel und Beispielskript wird veranschaulicht, wie PowerShell zum Aufrufen des Fabric-REST-API-Starts oder Beenden der Spiegelung verwendet wird.

Sql-Datenbankspiegelung auf OneLake wird standardmäßig immer ausgeführt. Es gibt Szenarien, in denen die Spiegelung für SQL-Datenbank in Fabric beendet werden muss. Wenn Sie beispielsweise die Erstellung gruppierter Spaltenindizes für eine vorhandene Tabelle aktivieren möchten, die beim Ausführen der Spiegelung nicht erstellt werden kann.

Voraussetzungen

Beenden der Spiegelung der SQL-Datenbank in OneLake in Fabric

In den folgenden PowerShell-Beispielen wird die Spiegelung einer SQL-Datenbank auf die OneLake in Fabric beendet.

Dieses Beispielskript verwendet Connect-AzAccount, einen Alias von az login, um zur Eingabe von Anmeldeinformationen aufzufordern. Sie verwendet diese Anmeldeinformationen, um ein Zugriffstoken abzurufen, das für die REST-API-Aufrufe verwendet werden soll. SQLCMD verwendet den Kontext des Kontos, der für Connect-AzAccount angegeben wurde.

Im folgenden Skript müssen Sie die Arbeitsbereichs-ID und datenbank-ID angeben. Beide finden Sie in der URL. https://powerbi.com/groups/<fabric_workspace_id>/sqldatabases/<fabric_sql_database_id>. Die erste Zeichenfolge in der URL ist die Fabric-Arbeitsbereichs-ID, und die zweite Zeichenfolge ist die SQL-Datenbank-ID.

  • Ersetzen Sie <your workspace id> durch Ihre Fabric-Arbeitsbereichs-ID. Sie können die ID eines Arbeitsbereichs ganz einfach in der URL finden; es ist die eindeutige Zeichenfolge innerhalb von zwei /-Zeichen nach /groups/ in Ihrem Browserfenster.
  • Ersetzen Sie <your database id> durch Ihre SQL-Datenbank in der Fabric-Datenbank-ID. Sie können die ID des Datenbankelements ganz einfach in der URL finden, es ist die eindeutige Zeichenfolge innerhalb von zwei / Zeichen nach /sqldatabases/ dem Browserfenster.

Dieses Skript veranschaulicht Folgendes:

  1. Rufen Sie mithilfe von Get-AzAccessToken ein Zugriffstoken ab, und konvertieren Sie es aus einer sicheren Zeichenfolge. Bei Verwendung von PowerShell 7 ist ConvertFrom-SecureString ebenfalls eine Option.
  2. Api-Aufruf zusammenstellen.
  3. API-Aufruf auslösen.
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)
}

Spiegelung der SQL-Datenbank in OneLake in Fabric starten

In den folgenden PowerShell-Beispielen wird die Spiegelung einer SQL-Datenbank auf OneLake in Fabric gestartet.

Dieses Beispielskript verwendet Connect-AzAccount, einen Alias von az login, um zur Eingabe von Anmeldeinformationen aufzufordern. Sie verwendet diese Anmeldeinformationen, um ein Zugriffstoken abzurufen, das für die REST-API-Aufrufe verwendet werden soll. SQLCMD verwendet den Kontext des Kontos, der für Connect-AzAccount angegeben wurde.

Ersetzen Sie im folgenden Skript <your workspace id> durch Ihre Fabric-Arbeitsbereichs-ID. Sie können die ID eines Arbeitsbereichs ganz einfach in der URL finden; es ist die eindeutige Zeichenfolge innerhalb von zwei /-Zeichen nach /groups/ in Ihrem Browserfenster. Beispiel: 11aa111-a11a-1111-1abc-aa1111aaaa in https://fabric.microsoft.com/groups/11aa111-a11a-1111-1abc-aa1111aaaa/.

Dieses Skript veranschaulicht Folgendes:

  1. Rufen Sie mithilfe von Get-AzAccessToken ein Zugriffstoken ab, und konvertieren Sie es aus einer sicheren Zeichenfolge. Bei Verwendung von PowerShell 7 ist ConvertFrom-SecureString ebenfalls eine Option.
  2. Api-Aufruf zusammenstellen.
  3. API-Aufruf ausführen.
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)
}