Analysis Services データベースの移動

Analysis Services データベース管理者 (dba) が、多次元モデル データベースまたはテーブル モデル データベースを別の場所に移動したいと思う状況はよくあります。このような状況は、パフォーマンスの向上のためにデータベースを別のディスクに移動する場合、データベースの増大のために空き領域を増やす場合、製品をアップグレードする場合など、ビジネス ニーズによって発生することがよくあります。

データベースの移動方法は多数あります。 このドキュメントでは、次の一般的なシナリオについて説明します。

  • SSMS の対話的使用

  • AMO を使用したプログラム

  • XMLA を使用したスクリプト

どのシナリオにおいても、ユーザーはデータベース フォルダーにアクセスし、ファイルを目的の場所に移動する方法を使用する必要があります。

注意

パスワードを割り当てずにデータベースをデタッチすると、そのデータベースはセキュリティで保護されていない状態のままになります。 データベースにパスワードを割り当てて、機密情報を保護することをお勧めします。 また、対応するアクセス セキュリティをデータベース フォルダー、サブフォルダー、ファイルに適用して、不正アクセスを防ぐ必要があります。

手順

SSMS を使用したデータベースの対話的移動

  1. SSMS の左側または右側のペインで、移動するデータベースを探します。

  2. データベースを右クリックし、[デタッチ] をクリックします。

  3. デタッチするデータベースにパスワードを割り当て、[OK] をクリックしてデタッチ コマンドを実行します。

  4. ファイルを移動するための、オペレーティング システムのメカニズムまたは標準的な方法を使用して、データベース フォルダーを新しい場所に移動します。

  5. SSMS の左側または右側のペインで、[データベース] フォルダーを探します。

  6. [データベース] フォルダーを右クリックし、[アタッチ] をクリックします。

  7. [フォルダー] ボックスに、データベース フォルダーの移動先を入力します。 または、参照ボタン ([…]) を使用して、データベース フォルダーを探すこともできます。

  8. データベースの ReadWrite モードを選択します。

  9. 手順 3. で使用したパスワードを入力し、[OK] をクリックしてアタッチ コマンドを実行します。

AMO を使用したプログラムによるデータベースの移動

  • C# アプリケーションで、次のサンプル コードを調整して、指定されたタスクを完了します。

private void MoveDb(Server server, string dbName,

string dbInitialLocation, string dbFinalLocation,

string dbPassword, ReadWriteMode dbReadWriteMode)

{

//Verify dbInitialLocation exists before continuing

if (server.Databases.ContainsName(dbName))

{

Database db;

//Save current cursor and change cursor to Cursors.WaitCursor

db = server.Databases[dbName];

db.Detach(dbPassword);

//Add your own code to copy the database files to the destination where you intend to attach the database

//Verify dbFinalLocation exists before continuing

server.Attach(dbFinalLocation, dbReadWriteMode, dbPassword);

//Restore cursor to its original

}

}

  1. C# アプリケーションで、必要なパラメーターを指定して MoveDb() を呼び出します。

  2. コードをコンパイルして実行し、データベースを移動します。

XMLA を使用したスクリプトによるデータベースの移動

  1. SSMS で新しい XMLA タブを開きます。

  2. 次の XMLA 用のスクリプト テンプレートをコピーします。

<Detach xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">

<Object>

<DatabaseID>%dbName%</DatabaseID>

<Password>%password%</Password>

</Object>

</Detach>

  1. %dbName% をデータベースの名前に置き換え、%password% をパスワードに置き換えます。 テンプレートに含まれている文字 % は削除する必要があります。

  2. XMLA コマンドを実行します。

  3. ファイルを移動するための、オペレーティング システムのメカニズムまたは標準的な方法を使用して、データベース フォルダーを新しい場所に移動します。

  4. 新しい XMLA タブに、次の XMLA 用のスクリプト テンプレートをコピーします。

<Attach xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">

<Folder>%dbFolder%</Folder>

<ReadWriteMode xmlns="https://schemas.microsoft.com/analysisservices/2008/engine/100">%ReadOnlyMode%</ReadWriteMode>

</Attach>

  1. %dbFolder% をデータベース フォルダーの完全な UNC パスに置き換え、%ReadOnlyMode% を対応する値 ReadOnly または ReadWrite に置き換え、%password% をパスワードに置き換えます。 テンプレートに含まれている文字 % は削除する必要があります。

  2. XMLA コマンドを実行します。

関連項目

参照

Attach 要素

Detach 要素

ReadWriteMode 要素

DbStorageLocation 要素

Attach

Detach

概念

Analysis Services データベースのアタッチとデタッチ

データベースの格納場所

データベースの ReadWriteMode