次の方法で共有


Analysis Services データベースの ReadOnly モードと ReadWrite モードの切り替え

Analysis Services のデータベース管理者 (DBA) がデータベースの読み取り/書き込みモードを変更することは少なくありません。こうした状況は、ユーザーが操作しやすくなるように一連の Analysis Services サーバー間でデータベースを共有するなどのビジネス上のニーズによって頻繁に発生します。

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

  • SQL Server Management Studio の対話的な使用

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

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

手順

Management Studio を使用してデータベースの読み取り/書き込みモードを対話的に切り替えるには

  1. Management Studio の左側または右側のペインで切り替えるデータベースを指定します。

  2. データベースを右クリックし、[プロパティ] をクリックします。データベース フォルダを検索し、場所を確認します。データベースのストレージの場所が空の場合は、データベース フォルダがサーバー データ フォルダ内にあることを示しています。

    重要な注意事項重要

    データベースがデタッチされるとすぐに、Management Studio では、データベースの位置を取得できなくなります。

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

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

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

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

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

  8. データベースの読み取り/書き込みモードを選択します。

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

プログラムで AMO を使用してデータベースの読み取り/書き込みモードを切り替えるには

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

private void SwitchReadWrite(Server server, string dbName,

ReadWriteMode dbReadWriteMode)

{

if (server.Databases.ContainsName(dbName))

{

Database db;

string databaseLocation;

db = server.Databases[dbName];

databaseLocation = db.DbStorageLocation;

if (databaseLocation == null)

{

string dataDir = server.ServerProperties["DataDir"].Value;

String[] possibleFolders = Directory.GetDirectories(dataDir, string.Concat(dbName,"*"), SearchOption.TopDirectoryOnly);

if (possibleFolders.Length > 1)

{

List<String> sortedFolders = new List<string>(possibleFolders.Length);

sortedFolders.AddRange(possibleFolders);

sortedFolders.Sort();

databaseLocation = sortedFolders[sortedFolders.Count - 1];

}

else

{

databaseLocation = possibleFolders[0];

}

}

db.Detach();

server.Attach(databaseLocation, dbReadWriteMode);

}

}

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

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

XMLA を使用したスクリプトでデータベースの読み取り/書き込みモードを切り替えるには

  1. Management Studio の左側または右側のペインで切り替えるデータベースを指定します。

  2. データベースを右クリックし、[プロパティ] をクリックします。データベース フォルダを検索し、場所を確認します。データベースのストレージの場所が空の場合は、データベース フォルダがサーバー データ フォルダ内にあることを示しています。

    重要な注意事項重要

    データベースがデタッチされるとすぐに、Management Studio では、データベースの位置を取得できなくなります。

  3. Management Studio で、新しい XMLA タブを開きます。

  4. 次の 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. 新しい 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 コマンドを実行します。