Freigeben über


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

Es gibt oftmals Situationen, in denen ein Analysis Services-Datenbankadministrator (DBA) den Lese-/Schreibmodus einer Datenbank ändern möchte. Diese Situationen hängen in der Regel von Geschäftsforderungen ab, z. B. der Freigabe der Datenbank für einen Pool von Analysis Services-Servern zur Vereinfachung der Nutzung.

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

  • Interaktiv mithilfe von SQL Server Management Studio

  • Programmgesteuert mithilfe von AMO

  • Mit einem Skript mithilfe von XMLA

Verfahrensweisen

So schalten Sie den Lese-/Schreibmodus einer Datenbank interaktiv mithilfe von Management Studio um

  1. Suchen Sie im linken oder rechten Bereich von Management Studio nach der umzuschaltenden Datenbank.

  2. Klicken Sie mit der rechten Maustaste auf die Datenbank, und wählen Sie Eigenschaften aus. Suchen Sie den Datenbankordner, und notieren Sie sich den Speicherort. Ein leerer Datenbankspeicherort weist darauf hin, dass sich der Datenbankordner im Datenordner des Servers befindet.

    Wichtiger HinweisWichtig

    Sobald die Datenbank getrennt ist, kann Management Studio Ihnen nicht mehr dabei helfen, den Datenbankspeicherort abzurufen.

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

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

  5. Suchen Sie im linken oder rechten Bereich von Management Studio nach dem Ordner Datenbanken.

  6. Klicken Sie mit der rechten Maustaste auf den Ordner Datenbanken, und wählen Sie Anfügen aus.

  7. Geben Sie im Textfeld Ordner den ursprünglichen Speicherort des Datenbankordners ein. Alternativ können Sie über die Schaltfläche zum Durchsuchen () nach dem Datenbankordner suchen.

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

  9. Geben Sie das in Schritt 3 verwendete Kennwort ein, und klicken Sie auf OK, um den Befehl zum Anfügen auszuführen.

So schalten Sie den Lese-/Schreibmodus einer Datenbank programmgesteuert mithilfe von AMO um

  • Passen Sie in der C#-Anwendung den folgenden Beispielcode an, und führen Sie die angegebenen Aufgaben 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[] 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. Rufen Sie in der C#-Anwendung SwitchReadWrite() mit den erforderlichen Parametern auf.

  2. Kompilieren Sie den Code, und führen Sie ihn zum Verschieben der Datenbank aus.

So schalten Sie den Lese-/Schreibmodus einer Datenbank mit einem Skript mithilfe von XMLA um

  1. Suchen Sie im linken oder rechten Bereich von Management Studio nach der umzuschaltenden Datenbank.

  2. Klicken Sie mit der rechten Maustaste auf die Datenbank, und wählen Sie Eigenschaften aus. Suchen Sie den Datenbankordner, und notieren Sie sich den Speicherort. Ein leerer Datenbankspeicherort weist darauf hin, dass sich der Datenbankordner im Datenordner des Servers befindet.

    Wichtiger HinweisWichtig

    Sobald die Datenbank getrennt ist, kann Management Studio Ihnen nicht mehr dabei helfen, den Datenbankspeicherort abzurufen.

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

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

<Detach xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">

<Object>

<DatabaseID>%dbName%</DatabaseID>

<Password>%password%</Password>

</Object>

</Detach>

  1. Ersetzen Sie %dbName% durch den Namen der Datenbank und %password% durch das Kennwort. Die %-Zeichen sind Teil der Vorlage und müssen entfernt werden.

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

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

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

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