エクスポート (0) 印刷
すべて展開

SQL データ同期プレビュー トラブルシューティング ガイド

更新日: 2013年10月

 

 

このトラブルシューティング ガイドでは、現時点で SQL データ同期プレビュー チームが把握している問題について説明します。問題の回避策がある場合は、それについても説明します。

新しい問題が見つかったり、回避策が変更されたりした場合は、この記事に追加、更新します。

Microsoft Azure Silverlight ポータル上の Microsoft Azure SQL データ同期プラグインは廃止されました。今後、Azure SQL データ同期には Microsoft Azure の管理ポータルを使用してください。

Microsoft Azure の管理ポータルの [SQL データベース] の下にある [同期] タブから SQL データ同期 (プレビュー) にアクセスします。[同期] タブは、1 つまたは複数の同期グループを持つ場合にのみ使用できます。「方法: Create a Sync Group (SDS)」のトピックで、このポータルから同期グループを作成、修正する方法をご覧いただけます。

開始前に読んでおく必要があるトピックへのリンク、および同期グループの作成と変更に関するガイダンスへのリンクについては、以下の「ナビゲーション」を参照してください。

クライアント エージェントが動作しない

アンインストールのキャンセル後にクライアント エージェントが動作しない

自分のデータベースがエージェントのドロップダウン リストに表示されない

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

"ディスク領域不足" メッセージが表示される

同期グループを削除できない

クライアント エージェントに関連付けられた内部設置型のデータベース用のポータル UI で同期が失敗する

内部設置型の SQL Server データベースの登録を解除できない

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

システム サービスを開始するのに十分な権限がない

ローカル Sync Agent UI からローカル同期サービスに接続できない

インストール、アンインストール、または修復に失敗する

データベースが "最新ではない" 状態になっている

同期グループが "最新ではない" 状態になっている

テーブルのデータにエラーが生じている

同期に成功した後に PK データに一貫性がない

パフォーマンスが大幅に低下する

クライアント エージェントに関連付けられている内部設置型のデータベースにアクセスできない場合に、ポータルからクライアント エージェントを削除できない

エージェントをアンインストールまたは停止してから 3 分経過するまで同期グループを削除できない

ストアド プロシージャが原因でコンパイル時のエラーが発生する

クライアント エージェントを使用しようとすると、次のエラー メッセージが表示される。

"次の例外により同期に失敗しました: パラメーター www.microsoft.com/.../05:GetBatchInfoResult のシリアル化を解除しようとしているときにエラーが発生しました。詳細については、InnerException を参照してください。

内部例外メッセージ:型 'Microsoft.Synchronization.ChangeBatch' は、無効なコレクションの型です。既定のコンストラクターがありません。"

これは、SQL データ同期プレビュー プレビューの問題です。

最も可能性の高い原因は次のとおりです。

  • Windows 8 Developer Preview を実行している。

  • .NET 4.5 をインストールしている。

Windows 8 Developer Preview が実行されておらず、かつ .NET Framework 4.5 がインストールされていないコンピューターにクライアント エージェントをインストールしていることを確認します。

クライアント エージェントが、そのアンインストールをキャンセルしても動作しない。

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

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

  • まず、services.msc を使用して、クライアント エージェント用の資格情報を再入力します。

  • 次に、このクライアント エージェントをアンインストールし、新しいものをインストールします。
    必要な場合は、ダウンロード センターから最新のクライアント エージェントをダウンロードしてインストールすることができます。

既存の SQL Server データベースを同期グループに追加しようとしても、ドロップダウン リストに表示されない。(図 1:2)


図 1

解決策は原因によって異なります。

1 つ目の原因の場合は、探しているデータベースがクライアント エージェントに登録されていることを確認してください。クライアント エージェントにデータベースを登録するには、次の手順を参照してください。

  1. SqlAzureDataSyncAgent を、それがインストールされている場所にある \bin ディレクトリから起動します。
    既定のインストール場所は C:\Program Files (x86)\Microsoft SQL Data Sync です。

  2. [登録] をクリックします。

  3. 適切な認証の種類のタブをクリックします ([SQL] または [Windows])。

  4. サーバーとデータベースを入力し、必要に応じて、表示されないデータベースの資格情報も入力します。

  5. [接続テスト] をクリックします。

  6. 接続に成功したら、[完了] をクリックします。

  7. データベースが状態ウィンドウに表示されたら、SqlAzureDataSyncAgent を閉じます。

  8. Web UI に戻り、[データベース一覧の取得] をクリックします。(図 1:1)

  9. 一覧が更新されるのを待ちます。

  10. ドロップダウン リストを使用してエージェントを選択し、同期グループに追加します。(図 1:2)

2 番目の原因の場合は、クライアント エージェントと同期グループの両方が同じデータ センターに配置されている必要があります。そのためには、次の操作を行います。

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

解決策:クライアント エージェント サービスを停止し、再起動します。

SQL Server がホストされているコンピューター上でエージェントが実行されていない (エージェントを確認して起動するには、「SQL Server データベースの登録」の手順 1. ~ 4. を実行します) 場合に、エージェントを手動で起動しようとすると、"エラー 1069: ログオン エラーによりサービスが開始されませんでした" というエラー メッセージのダイアログが表示される。


エラー 1069 ダイアログ

このエラーは、エージェントを作成し、そのエージェントにログオン パスワードを設定した後で、ローカル サーバーでパスワードが変更されたために発生したと考えられます。

解決方法は実に単純です。エージェントのパスワードを現在のサーバー パスワードに更新してください。

  1. SQL データ同期プレビュー クライアント エージェント プレビュー サービスを探します。

    Windows 7/Vista

    1. [スタート] ボタンをクリックします。

    2. [プログラムとファイルの検索] というテキスト フィールドに「services.msc」と入力します。

    3. 検索結果で、"Services" をクリックします。

    Windows XP

    1. [スタート] ボタンをクリックします。

    2. [開く] というテキスト フィールドに「services」と入力します。

    3. [OK] をクリックします。

  2. [サービス] ウィンドウで、SQL データ同期プレビュー Agent プレビュー のエントリまでスクロールします。

  3. エントリを右クリックし、[停止] をクリックします。

  4. エントリを右クリックし、[プロパティ] をクリックします。

  5. [SQL データ同期プレビューのエージェント プレビューのプロパティ] ウィンドウで、[ログオン] タブをクリックします。

  6. [パスワード] ボックスにパスワードを入力します。

  7. [パスワードの確認入力] ボックスにパスワードをもう一度入力します。

  8. [適用] をクリックし、[OK] をクリックします。

  9. [サービス] ウィンドウで [SQL データ同期プレビューのエージェント プレビュー] サービスを右クリックし、[開始] をクリックします。

  10. [サービス] ウィンドウを閉じます。

"ディスク領域不足" メッセージは、削除する必要のあるファイルが削除されていない場合に表示されることがあります。原因は、ウイルス対策ソフトウェアや、削除の実行時に開かれていたファイルなどです。

%temp% にある同期ファイルを手動で削除し (del *sync* /s)、サブディレクトリも削除してください。

Important重要
同期が完了するのを待ってからファイルを削除してください。

同期グループを削除しようとしても、削除できない。

次のいずれの場合も、同期グループの削除エラーにつながる可能性があります。

  • クライアント エージェントがオフラインの場合。

    クライアント エージェントがオンラインであることを確認してからやり直してください。

  • クライアント エージェントがアンインストールされているか存在しない場合。

    クライアント エージェント がアンインストールされているか存在しない場合は、次の手順を実行してください。

    1. SQL データ同期プレビューインストール フォルダーからエージェント XML ファイルを削除します (このファイルが存在する場合)。

    2. 内部設置型の同じコンピューターか別のコンピューターにエージェントをインストールし、オフラインになっているエージェント用に生成したエージェント キーをポータルから送信します。

  • SQL データ同期プレビュー サービスが停止している場合。

    1. [スタート] メニューで "Services" を検索します。

    2. 検索結果の [プログラム] セクションで [Services] をクリックします。

    3. SQL データ同期プレビュー プレビュー サービスを探します。

    4. サービスの状態が [停止] になっている場合は、サービス名を右クリックし、ドロップダウン メニューの [開始] をクリックします。

  • データベースがオフラインである。

    SQL データベース と SQL Server データベースがすべてオンラインであることを確認します。

  • 同期グループの準備または同期が進行中である。

    準備または同期のプロセスが完了するまで待ってから、同期グループの削除を再試行します。

エージェントに関連付けられた内部設置型のデータベース用の SQL データ同期プレビューポータル UI で同期が失敗する。エージェントを実行しているローカル コンピューターのイベント ログで、ディスク領域が不足していることを示す System.IO.IOException エラーが見つかります。

%TEMP% ディレクトリが存在するドライブ上に空き領域を増やします。

おそらく既に削除されているデータベースの登録を解除しようとしています。

SQL Server データベース
内部設置型の SQL Server データベースの登録を解除するには、データベースを選択し、[強制削除] をクリックします。

これで同期グループからデータベースが削除されない場合は、次の手順に従ってください。

  1. クライアント エージェント ホスト サービスを停止し、再起動します。

    1. [スタート] ボタンをクリックします。

    2. 検索ボックスに「services.msc」を入力します。

    3. 結果ウィンドウの [プログラム] セクションで [Services] をダブルクリックします。

    4. サービス SQL データ同期プレビューを探して右クリックします。

    5. サービスが実行中の場合はそのサービスを停止します。

    6. [スタート] ボタンをクリックします。

    7. データベースが登録されていないかどうかを確認します。データベースが登録されていない場合は登録します。登録されている場合は次の手順に進みます。

  2. クライアント エージェント UI (SqlAzureDataSyncAgent) を開きます。

  3. [資格情報の編集] をクリックし、データベースにアクセスするための資格情報を入力します。

  4. 登録解除の手順を実行します。

エージェントのキーを作成し、SqlAzureDataSyncAgent アプリケーションを通じて送信しようとしたが、送信が完了しない。


キー送信エラー ダイアログ

続行する前に、次の状態のどちらかが問題の原因ではないことを確認します。以下を確認してください。

  • SQL データ同期プレビュー Windows サービスが実行中である。

  • SQL データ同期プレビュー プレビュー Windows サービス用のサービス アカウントがネットワークにアクセスしている。

  • クライアント エージェントが Locator Service に接続できる。
    次のレジストリ キーの値が "https://locator.sync.azure.com/LocatorServiceApi.svc" であることを確認してください。

    • x86 コンピューターの場合: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Azure Data Sync\LOCATORSVCURI

    • x64 コンピューターの場合: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\SQL Azure Data Sync\LOCATORSVCURI

各ローカル エージェントはエージェント キーで一意に識別されます。キーが正しく機能するには、2 つの条件が満たされていることが必要です。

  • クライアント エージェントサーバーとローカル コンピューターとでSQL データ同期プレビュー キーが同じである必要があります。

  • クライアント エージェント キーを一度だけ使用することができます。

エージェントが動作していない場合、これらの条件の一方または両方が満たされていないことが原因です。エージェントを再度動作させるには、次の手順に従います。

  1. 新しいキーを生成します。

    1. ブラウザーで Azure Platform ポータルを開きます。

    2. 左側のウィンドウで、[SQL データベース] をクリックします。

    3. 上部のリボンで、[同期プレビュー] を探してクリックします。

    4. 画面の下部の [キーの管理] をクリックします。

    5. [エージェント名] に正しいエージェント名が表示されることを確認します。

    6. アクセス キーの管理ウィザードで [生成] をクリックします。

    7. 新しいキー値の右側にあるクリップボード アイコンをクリックします。メッセージが表示されたら、クリップボードがデータにアクセスできるようにします。

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

    1. エクスプローラーを使用して、エージェントのインストール ディレクトリに移動します。

      既定のインストール ディレクトリは c:\program files (x86)\microsoft sql data sync です。

    2. bin サブディレクトリをダブルクリックします。

    3. SqlAzureDataSyncAgent アプリケーションを起動します。

    4. [エージェント キーの送信] をクリックします。

    5. クリップボードから、指定のスペースにキーを貼り付けます。

    6. [OK] をクリックします。

    7. プログラムを閉じます。

このエラーが発生する状況は 2 つあります。

  • ユーザー名またはパスワードが正しくない。

  • 指定したユーザー アカウントに、サービスとしてログオンする十分な権限がない。

サービスとしてのログオンの資格情報をユーザー アカウントに付与します。

  1. [スタート] ボタンをクリックし、[コントロール パネル] をクリックします。[管理ツール]、[ローカル セキュリティ ポリシー]、[ローカル ポリシー]、[ユーザー権限の管理] の順に移動します。

  2. [サービスとしてログオン] エントリを探してクリックします。

  3. [サービスとしてログオンのプロパティ] ダイアログでユーザー アカウントを追加します。

  4. [適用] をクリックし、[OK] をクリックします。

  5. ウィンドウを閉じます。

以下を試してください。

  1. UI を終了します。

  2. [コンポーネント サービス] パネルを開きます。

    1. [スタート] ボタンをクリックし、[プログラムとファイルの検索] に移動します。

    2. 「services.msc」と入力します。

    3. 検索結果の [プログラム] セクションで [Services] をダブルクリックします。

  3. "SQL データ同期プレビュー プレビュー" サービスを停止し、再起動します。

  4. UI を再起動します。

このエラーの原因はさまざまです。このエラーの原因を突き止めるには、ログを参照する必要があります。

発生したエラーの原因を突き止めるには、Windows インストーラー ログを生成して参照する必要があります。ログ記録はコマンド ラインから有効にできます。ここでは、ダウンロードした AgentServiceSetup.msi ファイルが LocalAgentHost.msi であると仮定します。次のコマンド ラインを使用してログ ファイルを生成し、調べます。

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

    LocalAgentSetup.InstallLog

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

    LocalAgentSetup.InstallLog

Windows インストーラーによるすべてのインストールに対してログ記録を有効にできます。マイクロソフト サポート技術情報の記事 (http://support.microsoft.com/kb/223300) に、Windows インストーラーのログ記録を有効にするワンクリック ソリューションが用意されています。また、これらのログの場所も示されています。

SQL データ同期プレビュー により、45 日以上 (データベースがオフラインになった時点から起算) オフラインになっているデータベースはサービスから削除されます。45 日以上オフラインだったデータベースをオンラインに戻すと、その状態が "最新ではない" に設定されます。

データベースが 45 日以上オフラインにならないようにすることで、"最新ではない" 状態を避けることができます。

データベースの状態が "最新ではない" の場合は、次の操作が必要です。

  1. "最新ではない" データベースを同期グループから削除します。

  2. そのデータベースを同期グループに戻します。「同期グループにデータベースを追加する (SDS)」を参照してください。


    Warning警告
    このデータベースがオフラインの間に行われた変更は、すべて失われます。

Windows インストーラーによるすべてのインストールに対してログ記録を有効にできます。マイクロソフト サポート技術情報の記事 (http://support.microsoft.com/kb/223300) に、Windows インストーラーのログ記録を有効にするワンクリック ソリューションが用意されています。また、これらのログの場所も示されています。

45 日の保有期間中に 1 つ以上の変更の適用に失敗すると、同期グループは有効期限切れになる可能性があります。

"最新ではない" 状態を避けるには、(UI の履歴ビューで) 同期ジョブの結果を定期的に調べて、適用に失敗した変更を調査して解決してください。

同期グループの状態が "最新ではない" の場合は、同期グループを削除して作成し直す必要があります。「同期グループを削除する (SDS)」および「同期グループを作成する (SDS)」を参照してください。

Windows インストーラーによるすべてのインストールに対してログ記録を有効にできます。マイクロソフト サポート技術情報の記事 (http://support.microsoft.com/kb/223300) に、Windows インストーラーのログ記録を有効にするワンクリック ソリューションが用意されています。また、これらのログの場所も示されています。

名前が同じでスキーマが異なる複数のデータベース テーブルが同期の対象になっている場合、同期後に、これらのテーブルのデータにエラーが生じる。

SQL データ同期プレビュー の準備プロセスでは、名前が同じでスキーマが異なるテーブルに対し、同じ追跡テーブルを使用します。その結果、両方のテーブルの変更が同じ追跡テーブルに反映されるため、同期中にデータの変更にエラーが生じます。

同期の対象になっているテーブルが別々のスキーマに属している場合でも、テーブル名が重複していないことを確認してください。

成功したと報告された同期の後、ログに失敗した行やスキップした行が表示されていない場合、同期グループ内のデータベース間で PK データに一貫性がないことに気が付きます。

これは仕様です。主キー列を変更すると、PK が変更された行のデータに一貫性がなくなります。

このシナリオを回避するには、PK 列のデータが変更されないようにしてください。

一度この状況が発生すると、修復するには、影響を受けた行を同期グループ内のすべてのエンドポイントから削除し、もう一度挿入する必要があります。

パフォーマンスが大幅に低下する (場合によっては、データ同期 UI を起動さえできないレベルにまで低下)。

最も可能性の高い原因は、同期ループの理解と回避です。同期ループが発生するのは、同期グループ A による同期によって同期グループ B による同期が開始され、さらにそれによって同期グループ A による同期が開始される場合です。実際の状況はもっと複雑なこともあり、複数の同期グループがループに関係しますが、重要な要因は、同期グループによる同期が次から次に循環して行われることです。

最善の解決策は、予防です。同期グループに循環参照が含まれていないことを確認してください。ある同期グループで同期される行を、別の同期グループで同期することはできません。

SQL データ同期プレビュー クライアント エージェント に登録されているローカル エンドポイント (データベース) にアクセスできなくなると、クライアント エージェント を削除できない。

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

"強制削除" を使用して、アクセスできないデータベースを削除します。

noteメモ
"強制削除" 後に同期メタデータ テーブルが残っている場合は、deprovisioningutil.exe を使用してこれらのテーブルをクリーンアップします。「Q: How do I manually deprovision a database?」を参照してください。

関連付けられている SQL データ同期プレビュー クライアント エージェントをアンインストールまたは停止してから 3 分経過するまで、同期グループを削除できない。

  1. 関連付けられている同期エージェントがオンラインの状態で同期グループを削除することを強くお勧めします。

  2. インストールされているエージェントがオフラインの場合は、内部設置型のコンピューターでエージェントをオンラインにし、SQL データ同期プレビュー ポータルでエージェントの状態がオンラインになるまで待機してから、同期グループを削除してください。

  3. エージェントがアンインストールによりオフラインになっている場合は、次の手順を実行し、同期グループの削除を試してください。

    • SQL データ同期プレビューインストール フォルダーからエージェント XML ファイルを削除します (このファイルが存在する場合)。

    • 内部設置型の同じコンピューターか別のコンピューターにエージェントをインストールし、オフラインになっているエージェント用に生成したエージェント キーをポータルから送信します。

SQL データベース インスタンス または列の 1 つの照合順序が SQL Server インスタンスとは異なります。

SQL データベース インスタンス と SQL Server データベースの照合順序が同じであることを確認します。

SQL データ同期プレビューは SQL データベースの機能です。Azure 管理ポータルから、同期グループの作成、配置、および変更するために必要なすべてのタスクを実行できます。

 

開始前の準備

同期の設計および実装を開始する前に、以下の各トピックを理解しておく必要があります。

同期グループの作成方法

Azure 管理ポータルから同期グループを作成するには、6 つの手順を実行します。各手順の詳細については、以下のリンクを参照してください。

  1. Azure SQL データベース管理ポータル
    へのサインインSQL データ同期プレビューは、同期グループを作成すると、SQL データベースのタブとして表示されます。

  2. SQL データ同期プレビュー クライアント エージェントをインストールする

  3. SQL Server データベースをクライアント エージェントに登録する

  4. 同期グループを作成する (SDS)

  5. 同期データを定義する (SDS)

  6. 同期グループを構成する (SDS)

 

同期グループの変更方法

同期グループにテーブルまたは列を追加/削除したり、列の幅またはデータ型を変更したりして、同期グループのスキーマを変更できます。詳細については、以下のリンクを参照してください。

関連項目

表示:
© 2014 Microsoft