PowerShell を使用して、既存の同期グループの同期スキーマを更新する

適用対象:Azure SQL Database

この Azure PowerShell の例では、既存の SQL データ同期の同期グループの同期スキーマを更新します。 複数のテーブルを同期しているときは、同期スキーマの効率的な更新にこのスクリプトが役立ちます。 この例では、UpdateSyncSchema スクリプトの使用方法を示します。このスクリプトは、GitHub で UpdateSyncSchema.ps1 として入手できます。

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

注意

この記事では、Azure と対話するために推奨される PowerShell モジュールである Azure Az PowerShell モジュールを使用します。 Az PowerShell モジュールの使用を開始するには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

Azure Cloud Shell を使用する

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには:

オプション 例とリンク
コード ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードは Cloud Shell に自動的にコピーされません。 Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Screenshot that shows how to launch Cloud Shell in a new window.
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell でこの記事のコードを実行するには:

  1. Cloud Shell を開始します。

  2. [コピー] ボタンを選択して、コード ブロックをコードにコピーします。

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードを Cloud Shell セッションに貼り付けます。

  4. Enter キーを選択して、コードを実行します。

PowerShell をインストールしてローカルで使用する場合、このチュートリアルでは Az PowerShell 1.4.0 以降が必要になります。 アップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。 PowerShell をローカルで実行している場合、Connect-AzAccount を実行して Azure との接続を作成することも必要です。

SQL データ同期の概要については、Azure SQL データ同期を使用した複数のクラウドおよびオンプレミス データベース間でのデータの同期に関する記事を参照してください。

重要

現時点では、SQL データ同期で Azure SQL Managed Instance はサポートされていません。

同期スキーマにすべてのテーブルを追加する

次の例では、データベース スキーマを最新の情報に更新し、ハブ データベースのすべての有効なテーブルを同期スキーマに追加します。

UpdateSyncSchema.ps1 -SubscriptionId <subscriptionId> -ResourceGroupName <resourceGroupName> -ServerName <serverName> -DatabaseName <databaseName> `
    -SyncGroupName <syncGroupName> -RefreshDatabaseSchema $true -AddAllTables $true

テーブルおよび列を追加および削除する

次の例では、[dbo].[Table1][dbo].[Table2].[Column1] を同期スキーマに追加し、[dbo].[Table3] を削除します。

UpdateSyncSchema.ps1 -SubscriptionId <subscriptionId> -ResourceGroupName <resourceGroupName> -ServerName <serverName> -DatabaseName <databaseName> `
    -SyncGroupName <syncGroupName> -TablesAndColumnsToAdd "[dbo].[Table1],[dbo].[Table2].[Column1]" -TablesAndColumnsToRemove "[dbo].[Table3]"

スクリプト パラメーター

UpdateSyncSchema スクリプトには、次のパラメーターがあります。

パラメーター メモ
$subscriptionId 同期グループが作成されるサブスクリプション。
$resourceGroupName 同期グループが作成されるリソース グループ。
$serverName ハブ データベースのサーバー名。
$databaseName ハブ データベース名。
$syncGroupName 同期グループ名。
$memberName ハブ データベースからではなく同期メンバーからデータベース スキーマを読み込む場合は、メンバー名を指定します。 ハブからデータベース スキーマを読み込む場合は、このパラメーターは空のままにします。
$timeoutInSeconds スクリプトがデータベース スキーマを最新の情報に更新するときのタイムアウト。 既定値は 900 秒です。
$refreshDatabaseSchema スクリプトがデータベース スキーマを最新の情報に更新する必要があるかどうかを指定します。 データベース スキーマが以前の構成から変化している場合 (たとえば、新しいテーブルまたは新しい列を追加した場合)、スキーマを再構成する前に最新の情報に更新する必要があります。 既定値は false です。
$addAllTables この値を true にすると、すべての有効なテーブルと列が同期スキーマに追加されます。 $TablesAndColumnsToAdd と $TablesAndColumnsToRemove の値は無視されます。
$tablesAndColumnsToAdd 同期スキーマに追加するテーブルまたは列を指定します。 各テーブルまたは列の名前は、スキーマ名で完全に区切る必要があります。 例: [dbo].[Table1], [dbo].[Table2].[Column1]。 複数のテーブルまたは列の名前をコンマ (,) で区切って指定できます。
$tablesAndColumnsToRemove 同期スキーマから削除するテーブルまたは列を指定します。 各テーブルまたは列の名前は、スキーマ名で完全に区切る必要があります。 例: [dbo].[Table1], [dbo].[Table2].[Column1]。 複数のテーブルまたは列の名前をコンマ (,) で区切って指定できます。

スクリプトの説明

UpdateSyncSchema スクリプトでは、次のコマンドを使用します。 表内の各コマンドは、それぞれのドキュメントにリンクされています。

コマンド メモ
Get-AzSqlSyncGroup 同期グループに関する情報を返します。
Update-AzSqlSyncGroup 同期グループを更新します。
Get-AzSqlSyncMember 同期メンバーに関する情報を返します。
Get-AzSqlSyncSchema 同期スキーマに関する情報を返します。
Update-AzSqlSyncSchema 同期スキーマを更新します。

次のステップ

Azure PowerShell の詳細については、Azure PowerShell のドキュメントを参照してください。

その他の SQL Database 用の PowerShell サンプル スクリプトは、Azure SQL Database 用の PowerShell スクリプトのページにあります。

SQL データ同期の詳細については、以下を参照してください。

SQL Database の詳細については、以下をご覧ください。