SQL データ同期用のデータ同期エージェント

適用対象:Azure SQL Database

Azure に SQL データ同期のデータ同期エージェントをインストールして構成することによって、SQL Server データベースとデータを同期します。 SQL データ同期の詳細については、「複数のクラウドおよびオンプレミス データベースにわたるデータを SQL データ同期で同期します」を参照してください。

重要

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

ダウンロードしてインストールする

データ同期エージェントをダウンロードするには、SQL データ同期エージェントのページに移動します。 データ同期エージェントをアップグレードするには、古いエージェントと同じ場所にエージェントをインストールすると、元のエージェントがオーバーライドされます。

サイレント インストール

データ同期エージェントをコマンド プロンプトからサイレント インストールするには、次の例のようなコマンドを入力します。 ダウンロードした .msi ファイルのファイル名を確認し、TARGETDIR および SERVICEACCOUNT 引数に独自の値を指定します。

  • TARGETDIR の値を指定しない場合、既定値は C:\Program Files (x86)\Microsoft SQL Data Sync 2.0 です。

  • SERVICEACCOUNT の値として LocalSystem を指定した場合は、SQL Server に接続するエージェントを構成するときに、SQL Server 認証を使用します。

  • SERVICEACCOUNT の値としてドメイン ユーザー アカウントまたはローカル ユーザー アカウントを指定した場合は、SERVICEPASSWORD 引数を使用してパスワードを指定する必要もあります。 たとえば、「 SERVICEACCOUNT="<domain>\<user>" SERVICEPASSWORD="<password>" 」のように入力します。

msiexec /i "SQLDataSyncAgent-2.0-x86-ENU.msi" TARGETDIR="C:\Program Files (x86)\Microsoft SQL Data Sync 2.0" SERVICEACCOUNT="LocalSystem" /qn

SQL Server データベースとのデータの同期

1 つ以上の SQL Server データベースとデータを同期できるよう、データ同期エージェントを構成するには、SQL Server データベースの追加に関するページを参照してください。

データ同期エージェントの FAQ

なぜクライアント エージェントが必要ですか

SQL データ同期サービスは、クライアント エージェントを使って SQL Server データベースと通信します。 このセキュリティ機能では、ファイアウォールの背後にあるデータベースと直接通信できません。 SQL データ同期サービスは、エージェントと通信するとき、暗号化された接続と、一意のトークンつまり "エージェント キー" を使います。 SQL Server データベースは、接続文字列とエージェント キーを使ってエージェントを認証します。 この設計では、高レベルのセキュリティがデータに提供されます。

何個のローカル エージェント UI インスタンスを実行できますか

実行できる UI のインスタンスは 1 つだけです。

サービス アカウントを変更するにはどうすればよいですか

クライアント エージェントをインストールした後でサービス アカウントを変更する唯一の方法は、クライアント エージェントをアンインストールし、新しいサービス アカウントで新しいクライアント エージェントをインストールすることです。

エージェント キーを変更するにはどうすればよいですか

エージェント キーは、エージェントによって一度だけ使われます。 エージェントを削除して新しいエージェントを再インストールするときに再利用したり、複数のエージェントで共用したりすることはできません。 既存のエージェントに対して新しいキーを作成する必要がある場合は、クライアント エージェントと SQL データ同期サービスで同じキーが記録されるようにする必要があります。

クライアント エージェントの使用を終了するにはどうすればよいですか

すぐにエージェントを無効にしたり、使用を終了したりするには、ポータルでエージェント キーの再生成だけを行い、エージェント UI でのキーの送信は行わないでおきます。 キーを再生成すると、対応するエージェントがオンラインかオフラインかにかかわらず、前のキーは無効になります。

別のコンピューターにクライアント エージェントを移動するにはどうすればよいですか

現在とは異なるコンピューターからローカル エージェントを実行する場合は、次のようにします。

  1. 目的のコンピューターにエージェントをインストールします。
  2. SQL データ同期ポータルにサインインし、新しいエージェントのエージェント キーを再生成します。
  3. 新しいエージェントの UI を使って、新しいエージェント キーを送信します。
  4. 以前に登録されたオンプレミスのデータベースのリストをクライアント エージェントがダウンロードするまで待ちます。
  5. 到達不能と表示されるすべてのデータベースに対し、データベースの資格情報を指定します。 これらのデータベースには、エージェントをインストールした新しいコンピューターから到達可能でなければなりません。

同期エージェントがまだ関連付けられている同期メタデータ データベースを削除するにはどうすればよいですか

同期エージェントが関連付けられている同期メタデータ データベースを削除するには、まず、その同期エージェントを削除する必要があります。 エージェントを削除するには、次の手順を実行します。

  1. 同期データベースを選択します。
  2. [別のデータベースに同期] ページに移動します。
  3. 同期エージェントを選択し、[削除] を選択します。

データ同期エージェントの問題のトラブルシューティング

クライアント エージェントのインストール、アンインストール、または修復に失敗する

  • 原因。 このエラーはさまざまなシナリオで発生します。 このエラーの具体的な原因を特定するには、ログを調べます。

  • 解決策。 エラーの具体的な原因を特定するには、Windows インストーラー ログを生成し、内容を確認します。 ログ記録はコマンド プロンプトから有効にすることができます。 たとえば、ダウンロードしたインストール ファイルが SQLDataSyncAgent-2.0-x86-ENU.msi である場合は、次のコマンド ラインを使用してログ ファイルを生成し、内容を確認します。

    • インストールの場合: msiexec.exe /i SQLDataSyncAgent-2.0-x86-ENU.msi /l*v LocalAgentSetup.Log

    • アンインストールの場合: msiexec.exe /x SQLDataSyncAgent-2.0-x86-ENU.msi /l*v LocalAgentSetup.Log

      Windows インストーラーによって実行されるすべてのインストールについて、ログ記録を有効にすることもできます。 Microsoft サポート技術情報の記事「Windows インストーラーのログの記録を有効にする方法」には、Windows インストーラーのログの記録を有効にするワンクリック ソリューションが用意されています。 また、ログの場所も示されています。

アンインストールを取り消した後、クライアント エージェントが動作しない

クライアント エージェントのアンインストールを取り消した後でも、クライアント エージェントが動作しません。

  • 原因。 この原因は、SQL データ同期クライアント エージェントに資格情報が格納されないことです。

  • 解決策。 次の 2 つの解決策を試してください。

    • services.msc を使用してクライアント エージェントの資格情報を再入力します。
    • 今のクライアント エージェントをアンインストールした後、新規にクライアント エージェントをインストールします。 ダウンロード センターから最新のクライアント エージェントをダウンロードしてインストールします。

データベースがエージェントの一覧に表示されない

既存の SQL Server データベースを同期グループに追加しようとしたときに、対象のデータベースがエージェントの一覧に表示されません。

この問題は以下のシナリオで発生します。

  • 原因。 クライアント エージェントと同期グループが異なるデータセンターにある。

  • 解決策。 クライアント エージェントと同期グループは同じデータセンターに配置する必要があります。 この設定を行うには、2 つの方法があります。

    • 同期グループが配置されているデータセンターに新しいエージェントを作成します。 次に、そのエージェントにデータベースを登録します。
    • 現在の同期グループを削除します。 次に、エージェントが配置されているデータセンターで同期グループを再作成します。
  • 原因。 クライアント エージェントのデータベースの一覧が最新ではない。

  • 解決策。 クライアント エージェント サービスをいったん停止した後、再び開始します。

    関連付けられているデータベースの一覧をローカル エージェントがダウンロードするのは、エージェント キーの最初の送信時のみです。 それ以降のエージェント キーの送信時には、関連付けられているデータベースの一覧はダウンロードされません。 したがって、エージェントの移動中に登録されたデータベースは、元のエージェント インスタンスに表示されません。

クライアント エージェントが起動しない (エラー 1069)

SQL Server をホストしているコンピューターで、エージェントが実行されていませんでした。 エージェントを手動で起動しようとすると、"エラー 1069: ログオンに失敗したため、サービスを開始できませんでした。" というメッセージを示すダイアログ ボックスが表示されます。

Data Sync error 1069 dialog box

  • 原因。 このエラーの原因としては、エージェントを作成しエージェントのパスワードを指定した後でローカル サーバー上のパスワードが変更されたことが考えられます。

  • 解決策。 エージェントのパスワードを現在のサーバー パスワードに更新します。

    1. SQL データ同期クライアント エージェント サービスを見つけます。
      a. [スタート] を選択します。
      b. 検索ボックスに「services.msc」と入力します。
      c. 検索結果で、 [サービス] を選択します。
      d. [サービス] ウィンドウで、[SQL Data Sync Agent]\(SQL データ同期エージェント\) のエントリまでスクロールします。
    2. [SQL Data Sync Agent]\(SQL データ同期エージェント\) を右クリックして、[停止] を選択します。
    3. [SQL Data Sync Agent]\(SQL データ同期エージェント\) を右クリックして、[プロパティ] を選択します。
    4. [SQL Data Sync Agent Properties]\(SQL データ同期エージェントのプロパティ\) ウィンドウで、[ログイン] タブを選択します。
    5. [パスワード] ボックスにパスワードを入力します。
    6. [パスワードの確認] ボックスにパスワードをもう一度入力します。
    7. [Apply](適用) を選択し、次に [OK] を選択します。
    8. [サービス] ウィンドウで、[SQL Data Sync Agent] サービスを右クリックし、[開始] を選択します。
    9. [サービス] ウィンドウを閉じます。

エージェント キーを送信できない

エージェントのキーを作成または再作成した後、そのキーを SqlAzureDataSyncAgent アプリケーションで送信しようとしました。 しかし、送信が完了しませんでした。

Sync Error dialog box - Can't submit agent key

  • 前提条件。 開始する前に、次の前提条件を確認しておく必要があります。

    • SQL データ同期 Windows サービスが実行されている。

    • SQL データ同期 Windows サービスのサービス アカウントがネットワークにアクセスできる。

    • 送信 1433 ポートがローカル ファイアウォール規則で開かれている。

    • ローカル IP アドレスが、同期メタデータ データベースのサーバーまたはデータベース ファイアウォール規則に追加されている。

  • 原因。 各ローカル エージェントは、エージェント キーによって一意に識別されます。 キーは次の 2 つの条件を満たす必要があります。

    • SQL データ同期サーバーとローカル コンピューター上のクライアント エージェント キーが同一である必要があります。
    • クライアント エージェント キーは 1 回だけ使用することができます。
  • 解決策。 エージェントが動作していない場合、これらの条件の 1 つまたは両方が満たされていないことが原因です。 再び動作するようにエージェントを設定するには、次の操作を実行します。

    1. 新しいキーを生成します。
    2. 新しいキーをエージェントに適用します。

    新しいキーをエージェントに適用するには、次の手順を実行します。

    1. エクスプローラーで、エージェントのインストール ディレクトリに移動します。 既定のインストール ディレクトリは、C:\Program Files (x86)\Microsoft SQL Data Sync です。
    2. bin サブディレクトリをダブルクリックします。
    3. SqlAzureDataSyncAgent アプリケーションを開きます。
    4. [Submit Agent Key]\(エージェント キーの送信\) を選択します。
    5. 表示されたスペースにクリップボードからキーを貼り付けます。
    6. [OK] を選択します。
    7. プログラムを閉じます。

関連付けられているオンプレミス データベースにアクセスできない場合、クライアント エージェントをポータルから削除できない

SQL データ同期クライアント エージェントに登録されているローカル エンドポイント (つまり、データベース) にアクセスできない場合、クライアント エージェントを削除できません。

  • 原因。 アクセスできないデータベースがエージェントに登録されたままであるため、ローカル エージェントを削除することはできません。 エージェントを削除しようとすると、削除プロセスはデータベースにアクセスしようとしますが失敗します。

  • 解決策。 アクセスできないデータベースを削除するには、"強制削除" を使用します。

注意

"強制削除" の後に同期メタデータ テーブルが残っている場合は、deprovisioningutil.exe を使用してクリーンアップします。

ローカル同期エージェント アプリでローカル同期サービスに接続できない

  • 解決策。 次の手順を試してみてください。

    1. アプリを終了します。
    2. [コンポーネント サービス] パネルを開きます。
      a. タスク バーの検索ボックスに「services.msc」と入力します。
      b. 検索結果で、[サービス] をダブルクリックします。
    3. SQL データ同期サービスを停止します。
    4. SQL データ同期サービスを再起動します。
    5. アプリをもう一度開きます。

コマンド プロンプトからのデータ同期エージェントの実行

コマンド プロンプトから、データ同期エージェントの次のコマンドを実行できます。

サービスの ping

使用

SqlDataSyncAgentCommand.exe -action pingsyncservice

SqlDataSyncAgentCommand.exe -action "pingsyncservice"

登録されたデータベースの表示

使用

SqlDataSyncAgentCommand.exe -action displayregistereddatabases

SqlDataSyncAgentCommand.exe -action "displayregistereddatabases"

エージェント キーの送信

使用

Usage: SqlDataSyncAgentCommand.exe -action submitagentkey -agentkey [agent key]  -username [user name] -password [password]

SqlDataSyncAgentCommand.exe -action submitagentkey -agentkey [agent key generated from portal, PowerShell, or API] -username [user name to sync metadata database] -password [user name to sync metadata database]

データベースの登録

使用

SqlDataSyncAgentCommand.exe -action registerdatabase -servername [on-premisesdatabase server name] -databasename [on-premisesdatabase name]  -username [domain\\username] -password [password] -authentication [sql or windows] -encryption [true or false]

SqlDataSyncAgentCommand.exe -action "registerdatabase" -serverName localhost -databaseName testdb -authentication sql -username <user name> -password <password> -encryption true

SqlDataSyncAgentCommand.exe -action "registerdatabase" -serverName localhost -databaseName testdb -authentication windows -encryption true

データベースの登録解除

このコマンドを使用してデータベースの登録を解除すると、データベースが完全にプロビジョニング解除されます。 データベースが他の同期グループに参加している場合、この操作は他の同期グループを中断します。

使用

SqlDataSyncAgentCommand.exe -action unregisterdatabase -servername [on-premisesdatabase server name] -databasename [on-premisesdatabase name]

SqlDataSyncAgentCommand.exe -action "unregisterdatabase" -serverName localhost -databaseName testdb

資格情報の更新

使用

SqlDataSyncAgentCommand.exe -action updatecredential -servername [on-premisesdatabase server name] -databasename [on-premisesdatabase name]  -username [domain\\username] -password [password] -authentication [sql or windows] -encryption [true or false]

SqlDataSyncAgentCommand.exe -action "updatecredential" -serverName localhost -databaseName testdb -authentication sql -username <user name> -password <password> -encryption true

SqlDataSyncAgentCommand.exe -action "updatecredential" -serverName localhost -databaseName testdb -authentication windows -encryption true

次のステップ

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