次の方法で共有


データベースの移動 (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 コマンドを実行します。