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

適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

SQL Server Analysis Servicesデータベース管理者は、クエリ ワークロードを複数のクエリ専用サーバーに分散する大規模な作業の一環として、表形式または多次元データベースの読み取り/書き込みモードを変更できます。

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

  • SQL Server Management Studioを使用して対話形式で

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

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

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

  1. オブジェクト エクスプローラーで、データベースを右クリックし、 [プロパティ] を選択します

    場所を書き留めます。 データベースのストレージの場所が空の場合は、データベース フォルダーがサーバー データ フォルダー内にあることを示しています。

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

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

  4. オブジェクト エクスプローラーで、 [データベース] フォルダーを右クリックし、 [アタッチ...] を選択します。

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

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

  7. パスワードを入力し、 [OK] をクリックしてアタッチ コマンドを実行します。

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

C# アプリケーションで、必要なパラメーターを指定して SwitchReadWrite() を呼び出します。 コードをコンパイルして実行し、データベースを移動します。

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 dataDir = server.ServerProperties["DataDir"].Value;  
                 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);  
    }  
}  
  

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

次の手順は、互換モードが 1050、1100、または 1103 の多次元データベースと表形式データベースに適用されます。

  1. オブジェクト エクスプローラーで、データベースを右クリックし、 [プロパティ] を選択します

    場所を書き留めます。 データベースのストレージの場所が空の場合は、データベース フォルダーがサーバー データ フォルダー内にあることを示しています。

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

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

  4. 次の XMLA 用のスクリプト テンプレートをコピーします。

    <Detach xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">  
       <Object>  
          <DatabaseID>%dbName%</DatabaseID>  
          <Password>%password%</Password>  
       </Object>  
    </Detach>  
    
  5. %dbName% をデータベースの名前に置き換え、 %password% をパスワードに置き換えます。 テンプレートに含まれている文字 % は削除する必要があります。

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

  7. 新しい 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>  
    
  8. %dbFolder% をデータベース フォルダーの完全な UNC パスに置き換え、 %ReadOnlyMode% を対応する値 ReadOnly または ReadWriteに置き換え、 %password% をパスワードに置き換えます。 テンプレートに含まれている文字 % は削除する必要があります。

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

参照

Analysis Services の高可用性とスケーラビリティ
Analysis Services データベースのアタッチとデタッチ
データベースの格納場所
データベースの ReadWriteMode
Attach 要素
Detach 要素
ReadWriteMode 要素
DbStorageLocation 要素