Analysis Services データベースの同期
適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
SQL Server Analysis Servicesには、データとメタデータをコピー元サーバー上のデータベースを移行先サーバー上のデータベースにコピーすることで、2 つのSQL Server Analysis Services データベースを同等にするデータベース同期機能が含まれています。 データベースの同期機能は、次のタスクを達成するために使用します。
ステージング サーバーから運用サーバーへのデータベースの配置。
ステージング サーバー上のデータベースにあるデータとメタデータに対して行った変更を使用して、実稼働サーバーのデータベースを更新します。
後で実行してデータベースの同期をとるための XMLA スクリプトも作成できます。
キューブとディメンションが複数のサーバーで処理されている分散ワークロードでは、データベースの同期機能を使用して、変更を単一のデータベースにマージします。
データベースの同期機能は同期先サーバーで開始され、データとメタデータのプルを実行して同期元サーバー上にあるデータベースのコピーに書き込みます。 データベースが存在しない場合は作成されます。 同期は 1 回限り実行される一方向の動作であり、データベースをコピーした段階で完了します。 データベース間のリアルタイム パリティ (同等性) は実現されません。
最新の変更をステージング サーバーから実稼働データベースにプルするために、同期元サーバーと同期先サーバーに既に存在するデータベースを再同期することができます。 2 台のサーバー上に存在するファイルは変更点を比較され、異なっているファイルが更新されます。 同期先サーバー上の既存のデータベースは、バックグラウンドで同期を実行している間も使用できます。 同期の進行中も、ユーザーは引き続き同期先データベースに対するクエリを実行できます。 同期が完了すると、SQL Server Analysis Servicesはユーザーを新しくコピーしたデータとメタデータに自動的に切り替え、コピー先データベースから古いデータを削除します。
データベースを同期するには、データベースの同期ウィザードを実行して直ちにデータベースを同期するか、このウィザードを使用して、後で実行できる同期スクリプトを生成します。 どちらの方法でも、SQL Server Analysis Services データベースとキューブの可用性とスケーラビリティを向上させることができます。
注意
次のホワイト ペーパーは、Analysis Services の以前のバージョンを対象として作成されたものですが、SQL Server 2012 を使用して作成したスケーラブルな多次元ソリューションにも引き続き当てはまります。 詳細については、「 Analysis Services を使用するクエリのスケールアウト 」および「 読み取り専用データベースによる Analysis Services のクエリのスケールアウト」を参照してください。
前提条件
データベースの同期を開始する同期先 (またはターゲット) サーバーで、Analysis Services サーバー管理者ロールのメンバーである必要があります。 同期元サーバーで、使用している Windows ユーザー アカウントに、同期元データベースに対するフル コントロールの権限が付与されている必要があります。 データベースを対話形式で同期する場合は、自分の Windows ユーザー ID のセキュリティ コンテキストで同期が実行されることに注意してください。 自分のアカウントが特定のオブジェクトへのアクセスを拒否された場合は、そのようなオブジェクトは操作から除外されます。 サーバー管理者ロールとデータベースのアクセス許可の詳細については、「 Analysis Services インスタンスにサーバー管理者権限を付与する 」および「 データベースのアクセス許可を付与する (Analysis Services)」を参照してください。
既定のインスタンス間のリモート接続を許可するために、両方のサーバーで TCP ポート 2383 を開く必要があります。 Windows ファイアウォールの例外を作成する方法の詳細については、「 Analysis Services のアクセスを許可するための Windows ファイアウォールの構成」を参照してください。
移行元サーバーと移行先サーバーの両方が、同じバージョンとサービス パックである必要があります。 モデル メタデータも同期されるため、互換性を確保するために、両方のサーバーのビルド番号を同じにする必要があります。 各インストールのエディションが、データベースの同期をサポートしている必要があります。 SQL Server 2017 では、エンタープライズ、開発者、ビジネス インテリジェンスの各エディションでデータベース同期がサポートされています。 各エディションの機能の詳細については、「SQL Server 2016 のエディションとサポートされる機能」を参照してください。
サーバー配置モードは、各サーバーで同じである必要があります。 同期するデータベースが多次元である場合は、同期元サーバーと同期先サーバーの両方が、多次元サーバー モードで構成されている必要があります。 配置モードの詳細については、「 Analysis Services インスタンスのサーバー モードの決定」を参照してください。
同期元サーバーでレイジー集計処理を使用している場合は、その処理を無効にします。 バックグラウンドで処理されている集計は、データベースの同期を妨げる可能性があります。 このサーバー プロパティの設定の詳細については、「 OLAP のプロパティ」を参照してください。
注意
データベースのサイズは、同期が適切な方法であるかどうかを判断する要因になります。 厳格な要件は存在しませんが、同期が非常に遅い場合は、「 Analysis Services の同期に関する推奨事項」というテクニカル ペーパーで説明されているように、複数のサーバーを並列に同期することを検討してください。
データベースの同期ウィザード
同期元から同期先データベースへの一方向の同期を実行するか、データベースの同期操作を指定するスクリプトを生成するには、データベースの同期ウィザードを使用します。 同期処理中にローカル パーティションとリモート パーティションの両方を同期し、ロールを含めるかどうかを選択することもできます。
データベースの同期ウィザードでは、次の手順に従います。
同期に使用する同期元 (ソース) インスタンスとデータベースを選択します。
同期先のインスタンス上のローカル パーティションの格納場所を選択します。
リモート パーティションの格納場所をその他の同期先のインスタンス上で選択します。
ソース インスタンスおよびデータベースから同期先のインスタンスにコピーする、セキュリティのレベルおよびメンバーシップ情報を選択します。
すぐに同期をとるか、または後で同期するためにデータベースの同期ウィザードによって生成される XML for Analysis (XMLA) 同期 コマンドをスクリプト ファイルに保存するかの選択を行います。
既定では、既存のセキュリティ グループに属するメンバーシップを除き、すべてのデータおよびメタデータの同期がとられます。 また、データおよびメタデータの同期時に、すべてのセキュリティ設定をコピーするか、あるいは一切無視することもできます。
ウィザードの実行
SQL Server Management Studioで、移行先データベースを実行するSQL Server Analysis Servicesのインスタンスに接続します。 たとえば、実稼働サーバーにデータベースを配置する場合は、実稼働サーバーでウィザードを実行します。
オブジェクト エクスプローラーで、 [データベース] フォルダーを右クリックし、 [同期]をクリックします。
同期元サーバー名と同期元データベースを指定します。 [同期するデータベースの選択] ページの [同期元サーバー] と [同期元データベース]で、同期元サーバーと同期元データベースの名前を入力します。 たとえば、テスト環境から実稼働サーバーに配置する場合は、同期元は、ステージング サーバー上のデータベースです。
移行先サーバーには、ソース データベースで選択したデータベースのデータとメタデータが同期されるSQL Server Analysis Services インスタンスの名前が表示されます。
同じ名前を持つコピー元データベースとコピー先データベースで同期が実行されます。 コピー先サーバーに、コピー元データベースと同じ名前のデータベースが既に存在する場合、コピー元のメタデータとデータを使用してコピー先のデータベースが更新されます。 コピー先サーバーに同じ名前のデータベースが存在しない場合は作成されます。
必要に応じて、ローカル パーティションの場所を変更します。 [ローカル パーティションの場所を指定] ページを使用して、ローカル パーティションが同期先サーバーに格納される場所を指定します。
注意
このページは、指定のデータベースに 1 つ以上のローカル パーティションが存在する場合にのみ表示されます。
パーティションのセットがコピー元サーバーの C ドライブにインストールされている場合、これらのパーティションをコピー先サーバーの別の場所にコピーできます。 既定の場所を変更しない場合、コピー元サーバー上の各キューブ内のメジャー グループ パーティションは、コピー先サーバーの同じ場所に配置されます。 同様に、コピー元サーバーがリモート パーティションを使用する場合、コピー先サーバーも同じリモート パーティションを使用します。
[場所] オプションでは、同期元フォルダー、同期先フォルダー、および同期先インスタンスに格納するローカル パーティションの推定サイズがグリッドに一覧表示されます。 このグリッドには次の列が含まれています。
[同期元フォルダー]
ローカル パーティションを含むソース SQL Server Analysis Services インスタンスのフォルダー名を表示します。 列に値 "(既定値)" が含まれている場合は、同期元インスタンスの既定の場所にローカル パーティションが含まれています。[同期先フォルダー]
ローカル パーティションの同期先SQL Server Analysis Servicesインスタンスのフォルダー名を表示します。 列に "(既定値)" が含まれている場合は、同期先インスタンスの既定の場所にローカル パーティションが含まれています。[...]ボタンをクリックして、 [リモート フォルダーの参照] ダイアログ ボックスを表示し、選択した場所に格納されたローカル パーティションを同期する同期先インスタンス上のフォルダーを指定します。
注意
同期元インスタンスの既定の場所に格納されているローカル パーティションを選択した場合、この列は変更できません。
サイズ
ローカル パーティションの推定サイズが表示されます。[選択した場所のパーティション] オプションには、[場所] で選択した行の [ソース フォルダー] 列に指定されたソース SQL Server Analysis Services インスタンス上の場所に格納されているローカル パーティションを表すグリッドが表示されます。
Cube
パーティションが含まれているキューブの名前が表示されます。メジャー グループ
パーティションが含まれているキューブ内のメジャー グループの名前が表示されます。パーティション名
パーティションの名前が表示されます。[サイズ (MB)]
パーティションのサイズ (MB) が表示されます。必要に応じて、リモート パーティションの場所を変更します。[リモート パーティションの場所の指定] ページを使用して、ソース サーバー上の指定したデータベースによって管理されているリモート パーティションを同期する必要があるかどうかを示し、選択したリモート パーティションの格納先となるインスタンスとデータベースSQL Server Analysis Services指定します。
注意
このページは、少なくとも 1 つのリモート パーティションが、ソース SQL Server Analysis Services インスタンス上の指定されたデータベースによって管理されている場合にのみ表示されます。
[場所] オプションでは、同期元データベースのリモート パーティションが格納されている場所について、同期元と同期先の情報、各場所で使用される記憶領域サイズなど、選択したデータベースから得られる詳細情報がグリッドに一覧表示されます。 このグリッドには次の列が含まれています。
同期
リモート パーティションが格納されている場所を同期中に含める場合は、オンにします。注意
このオプションをオフにした場所では、その場所に格納されているリモート パーティションは同期されません。
ソース サーバー
リモート パーティションを含むSQL Server Analysis Services インスタンスの名前を表示します。[同期元フォルダー]
リモート パーティションを含むSQL Server Analysis Services インスタンスのフォルダー名を表示します。 列に値 "(既定値)" が含まれている場合は、 [同期元サーバー] に表示されているインスタンスの既定の場所にリモート パーティションが含まれています。移行先サーバー
ソース サーバーとソース フォルダーで指定された場所に格納されているリモート パーティションを同期する必要があるSQL Server Analysis Services インスタンスの名前を表示します。省略記号 (...) ボタンをクリックして [接続マネージャー] ダイアログ ボックスを表示し、選択した場所に格納されているリモート パーティションを同期するSQL Server Analysis Servicesインスタンスを指定します。
[同期先フォルダー]
リモート パーティションの同期先となるSQL Server Analysis Services インスタンスのフォルダー名を表示します。 列に値 "(既定値)" が含まれている場合は、同期先インスタンスの既定の場所にリモート パーティションが含まれています。[...]ボタンをクリックして、 [リモート フォルダーの参照] ダイアログ ボックスを表示し、選択した場所に格納されたリモート パーティションを同期する同期先インスタンス上のフォルダーを指定します。
サイズ
この場所に格納されたリモート パーティションの推定サイズが表示されます。[選択した場所のパーティション] には、[場所] で選択した行の [ソース フォルダー] 列に指定されたソース SQL Server Analysis Services インスタンス上の場所に格納されているリモート パーティションを表すグリッドが表示されます。 このグリッドには次の列が含まれています。
Cube
パーティションが含まれているキューブの名前が表示されます。メジャー グループ
パーティションが含まれているキューブ内のメジャー グループの名前が表示されます。パーティション名
パーティションの名前が表示されます。[サイズ (MB)]
パーティションのサイズ (MB) が表示されます。ユーザー権限の情報を含める必要があるかどうか、および圧縮を使用する必要があるかどうかを指定します。 既定では、同期先サーバーにファイルをコピーする前に、ウィザードはすべてのデータとメタデータを圧縮します。 このオプションを使用すると、ファイル転送がより高速になります。 ファイルは、同期先サーバーに到着した時点で圧縮解除されます。
すべてをコピーする
同期時にセキュリティ定義とメンバーシップ情報を含めます。メンバーシップをスキップする
同期時にセキュリティ定義を含め、メンバーシップ情報を含めません。[すべて無視する]
同期元データベース内に現在存在しているセキュリティ定義とメンバーシップ情報を無視する場合に選択します。 同期中に、同期先データベースが作成された場合は、セキュリティ定義とメンバーシップ情報はコピーされません。 同期先データベースが既に存在し、ロールおよびメンバーシップが存在する場合、そのセキュリティ情報は保持されます。同期方法を選択します。 直ちに同期すること、またはスクリプトを生成してファイルに保存することができます。 既定では、.xmla 拡張子の付いたファイルが保存され、Documents フォルダーに格納されます。
[完了] をクリックして同期をとります。 [ウィザードの完了] ページでオプションを確認したら、もう一度 [完了] をクリックします。
次の手順
ロールまたはロールのメンバーシップを同期しなかった場合は、この段階で、同期先データベースでユーザー アクセス権を指定してください。
参照
Synchronize 要素 (XMLA)
XMLA を使用したモデル ソリューションの配置
デプロイメントウィザードを使用して、モデルソリューションをデプロイする。