Umschalten einer Analysis Services-Datenbank zwischen schreibgeschütztem Modus und Lese-/Schreibmodus

Gilt für: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

SQL Server Analysis Services Datenbankadministratoren können den Lese-/Schreibmodus einer tabellarischen oder mehrdimensionalen Datenbank im Rahmen eines größeren Aufwands ändern, der eine Abfrageworkload auf mehrere abfragegeschützte Server verteilt.

Es stehen mehrere Möglichkeiten zum Umschalten des Datenbankmodus zur Verfügung. In diesem Dokument werden die folgenden gängigen Szenarien erläutert:

  • Interaktives Verwenden von SQL Server Management Studio

  • Programmgesteuert mithilfe von AMO

  • Skript mithilfe von XMLA oder TMSL

Umschalten des Lese-/Schreibmodus einer Datenbank interaktiv mithilfe von Management Studio

  1. Klicken Sie in Objekt-Explorer mit der rechten Maustaste auf die Datenbank, und wählen Sie Eigenschaften aus.

    Beachten Sie den Speicherort. Ein leerer Datenbankspeicherort weist darauf hin, dass sich der Datenbankordner im Datenordner des Servers befindet.

  2. Klicken Sie mit der rechten Maustaste auf die Datenbank, und wählen Sie Trennen... aus.

  3. Weisen Sie der Datenbank, die getrennt werden soll, ein Kennwort zu, und klicken Sie anschließend auf OK , um den Befehl zum Trennen auszuführen.

  4. Klicken Sie in Objekt-Explorer mit der rechten Maustaste auf den Ordner Datenbanken, und wählen Sie Anfügen... aus.

  5. Geben Sie im Textfeld Ordner den ursprünglichen Speicherort des Datenbankordners ein. Alternativ können Sie die Schaltfläche zum Durchsuchen (...) verwenden, um den Datenbankordner zu suchen.

  6. Wählen Sie den Lese-/Schreibmodus für die Datenbank aus.

  7. Geben Sie das Kennwort ein, und klicken Sie auf OK , um den Befehl zum Anfügen auszuführen.

Umschalten des Lese-/Schreibmodus einer Datenbank programmgesteuert mithilfe von AMO

Rufen Sie in der C#-Anwendung SwitchReadWrite() mit den erforderlichen Parametern auf. Kompilieren Sie den Code, und führen Sie ihn zum Verschieben der Datenbank aus.

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);  
    }  
}  
  

Umschalten des Lese-/Schreibmodus einer Datenbank mit einem Skript mithilfe von XMLA

Die folgenden Anweisungen gelten für mehrdimensionale und tabellarische Datenbanken im Kompatibilitätsmodus 1050, 1100 oder 1103.

  1. Klicken Sie in Objekt-Explorer mit der rechten Maustaste auf die Datenbank, und wählen Sie Eigenschaften aus.

    Beachten Sie den Speicherort. Ein leerer Datenbankspeicherort weist darauf hin, dass sich der Datenbankordner im Datenordner des Servers befindet.

  2. Klicken Sie mit der rechten Maustaste auf die Datenbank, und wählen Sie Trennen... aus.

  3. Öffnen Sie eine neue XMLA-Registerkarte in Management Studio.

  4. Kopieren Sie die folgende Skriptvorlage für XMLA:

    <Detach xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">  
       <Object>  
          <DatabaseID>%dbName%</DatabaseID>  
          <Password>%password%</Password>  
       </Object>  
    </Detach>  
    
  5. Ersetzen Sie %dbName% durch den Namen der Datenbank und %password% durch das Kennwort. Die %-Zeichen sind Teil der Vorlage und müssen entfernt werden.

  6. Führen Sie den XMLA-Befehl aus.

  7. Kopieren Sie die folgende Skriptvorlage für XMLA in eine neue XMLA-Registerkarte:

    <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. Ersetzen Sie %dbFolder% durch den vollständigen UNC-Pfad des Datenbankordners, %ReadOnlyMode% durch den entsprechenden Wert ReadOnly oder ReadWriteund %password% durch das Kennwort. Die %-Zeichen sind Teil der Vorlage und müssen entfernt werden.

  9. Führen Sie den XMLA-Befehl aus.

Weitere Informationen

Hohe Verfügbarkeit und Skalierbarkeit in Analysis Services
Anfügen und Trennen von Analysis Services-Datenbanken
Datenbankspeicherort
Datenbank-ReadWriteModes
Attach-Element
Detach-Element
ReadWriteMode-Element
DbStorageLocation-Element