Analysis Services データベースの移動
適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
SQL Server 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="http://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>%dbName%</DatabaseID>
<Password>%password%</Password>
</Object>
</Detach>
%dbName%
をデータベースの名前に置き換え、%password%
をパスワードに置き換えます。 テンプレートに含まれている文字 % は削除する必要があります。XMLA コマンドを実行します。
ファイルを移動するための、オペレーティング システムのメカニズムまたは標準的な方法を使用して、データベース フォルダーを新しい場所に移動します。
新しい XMLA タブに、次の XMLA 用のスクリプト テンプレートをコピーします。
<Attach xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Folder>%dbFolder%</Folder>
<ReadWriteMode xmlns="http://schemas.microsoft.com/analysisservices/2008/engine/100">%ReadOnlyMode%</ReadWriteMode>
</Attach>
%dbFolder%
をデータベース フォルダーの完全な UNC パスに置き換え、%ReadOnlyMode%
を対応する値 ReadOnly または ReadWriteに置き換え、%password%
をパスワードに置き換えます。 テンプレートに含まれている文字 % は削除する必要があります。XMLA コマンドを実行します。
参照
Analysis Services データベースのアタッチとデタッチ
データベースの格納場所
データベースの ReadWriteMode
Attach 要素
Detach 要素
ReadWriteMode 要素
DbStorageLocation 要素