Analysis Services データベース管理者 (dba) が、多次元または表形式モデル データベースを別の場所に移動したい場合がよくあります。 このような状況は、多くの場合、パフォーマンスを向上させるためにデータベースを別のディスクに移動したり、データベースを拡張したり、製品をアップグレードしたりするなどのビジネス ニーズに基づきます。
データベースはさまざまな方法で移動できます。 このドキュメントでは、次の一般的なシナリオについて説明します。
SSMS をインタラクティブに使用する方法
プログラムによる AMO の使用
XMLA を使用したスクリプトによる
すべてのシナリオでは、ユーザーがデータベース フォルダーにアクセスし、ファイルを目的の最終変換先に移動するためのメソッドを使用する必要があります。
注
パスワードを割り当てずにデータベースをデタッチすると、データベースはセキュリティで保護されていない状態になります。 機密情報を保護するために、データベースにパスワードを割り当てることをお勧めします。 また、データベース フォルダー、サブフォルダー、ファイルに対応するアクセス セキュリティを適用して、それらに対する不正アクセスを防ぐ必要があります。
プロシージャ
SSMS を使用して対話形式でデータベースを移動する
SSMS の左ペインまたは右ペインで、移動するデータベースを見つけます。
データベースを右クリックし、[デタッチ]を選択 します。..
デタッチするデータベースにパスワードを割り当て、[ OK] をクリックしてデタッチ コマンドを実行します。
ファイルを移動してデータベース フォルダーを新しい場所に移動するには、任意のオペレーティング システム メカニズムまたは標準の方法を使用します。
SSMS の左側または右側のウィンドウで [ データベース] フォルダーを見つけます。
[データベース] フォルダーを右クリックし、[アタッチ...] を選択します。
フォルダー テキスト ボックスに、データベース フォルダーの新しい場所を入力します。 または、参照ボタン (...) を使用してデータベース フォルダーを見つけることもできます。
データベースの
ReadWrite
モードを選択します。手順 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
}
}
C# アプリケーションで、必要なパラメーターを使用して
MoveDb()
を呼び出します。コードをコンパイルして実行し、データベースを移動します。
XMLA を使用したスクリプトによるデータベースの移動
SSMS で新しい XMLA タブを開きます。
XMLA 用の次のスクリプト テンプレートをコピーする
<Detach xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>%dbName%</DatabaseID>
<Password>%password%</Password>
</Object>
</Detach>
%dbName%
をデータベースの名前に置き換え、%password%
をパスワードに置き換えます。 % 文字はテンプレートの一部であり、削除する必要があります。XMLA コマンドを実行します。
ファイルを移動してデータベース フォルダーを新しい場所に移動するには、任意のオペレーティング システム メカニズムまたは標準の方法を使用します。
新しい 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>
%dbFolder%
をデータベース フォルダーの完全な UNC パスに置き換え、対応する値ReadOnly
またはReadWrite
で%ReadOnlyMode%
し、パスワードで%password%
します。 % 文字はテンプレートの一部であり、削除する必要があります。XMLA コマンドを実行します。
こちらもご覧ください
Attach*
Microsoft.AnalysisServices.Database.Detach*
Analysis Services データベースの接続と切り離し
データベースの保存場所
Database ReadWriteModes
要素を取り付ける
取り外し要素
ReadWriteMode 要素
DbStorageLocation 要素