次の方法で共有


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 を使用してプログラムで読み取り/書き込みモードをデータベースに切り替えるには

  1. 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%またはReadOnlyReadWriteし、パスワードで%password%します。 % 文字はテンプレートの一部であり、削除する必要があります。

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

こちらもご覧ください

Attach*
Microsoft.AnalysisServices.Database.Detach*
Analysis Services データベースの接続と切り離し
データベースの保存場所
Database ReadWriteModes
要素を取り付ける
取り外し要素
ReadWriteMode 要素
DbStorageLocation 要素