Umschalten einer Analysis Services-Datenbank zwischen schreibgeschütztem Modus und Lese-/Schreibmodus
Es gibt häufig Situationen, in denen ein Analysis Services-Datenbankadministrator (dba) den Lese-/Schreibmodus einer tabellarischen oder multidimensionalen Datenbank ändern möchte. Diese Situationen werden häufig von geschäftlichen Anforderungen gesteuert, z. B. das Freigeben der Datenbank in einem Pool von Analysis Services-Servern für eine bessere Benutzererfahrung.
Es stehen zahlreiche Möglichkeiten zum Umschalten des Datenbankmodus zur Verfügung. In diesem Dokument werden die folgenden gängigen Szenarien erläutert:
Interaktive Verwendung von SQL Server Management Studio
Programmgesteuert mithilfe von AMO
Mit einem Skript mithilfe von XMLA
Vorgehensweisen
So schalten Sie den Lese-/Schreibmodus einer Datenbank interaktiv mithilfe von Management Studio um
Suchen Sie die Datenbank, die im linken oder rechten Bereich von Management Studio gewechselt werden soll.
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.
Wichtig
Sobald die Datenbank getrennt ist, kann Management Studio Ihnen nicht mehr beim Abrufen des Datenbankspeicherorts helfen.
Klicken Sie mit der rechten Maustaste auf die Datenbank, und wählen Sie "Trennen" aus ...
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.
Suchen Sie den Ordner "Datenbanken" im linken oder rechten Bereich von Management Studio.
Klicken Sie mit der rechten Maustaste auf den Ordner "Datenbanken ", und wählen Sie "Anfügen" aus ...
Geben Sie im Textfeld Ordner den ursprünglichen Speicherort des Datenbankordners ein. Alternativ können Sie die Schaltfläche "Durchsuchen" (...) verwenden, um den Datenbankordner zu suchen.
Wählen Sie den Lese-/Schreibmodus für die Datenbank aus.
Geben Sie das Kennwort ein, das in Schritt 3 verwendet wurde, und klicken Sie auf "OK ", um den Befehl "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);
}
}
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.
So schalten Sie den Lese-/Schreibmodus einer Datenbank mit einem Skript mithilfe von XMLA um
Suchen Sie die Datenbank, die im linken oder rechten Bereich von Management Studio gewechselt werden soll.
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.
Wichtig
Sobald die Datenbank getrennt ist, kann Management Studio Ihnen nicht mehr beim Abrufen des Datenbankspeicherorts helfen.
Öffnen Sie eine neue XMLA-Registerkarte in Management Studio.
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>
Ersetzen Sie
%dbName%
durch den Namen der Datenbank und%password%
durch das Kennwort. Die %-Zeichen sind Teil der Vorlage und müssen entfernt werden.Führen Sie den XMLA-Befehl aus.
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>
Ersetzen Sie
%dbFolder%
durch den vollständigen UNC-Pfad des Datenbankordners,%ReadOnlyMode%
durch den entsprechenden WertReadOnly
oderReadWrite
und%password%
durch das Kennwort. Die %-Zeichen sind Teil der Vorlage und müssen entfernt werden.Führen Sie den XMLA-Befehl aus.
Weitere Informationen
Attach*
Microsoft.AnalysisServices.Database.Detach*
Anfügen und Trennen von Analysis Services-Datenbanken
Datenbankspeicherort
Datenbank-ReadWriteModes
Attach-Element
Detach-Element
ReadWriteMode-Element
DbStorageLocation-Element