Basculer une base de données Analysis Services entre les modes ReadOnly et ReadWrite
Il existe souvent des situations dans lesquelles un administrateur de base de données Analysis Services souhaite modifier le mode de lecture/écriture d'une base de données tabulaire ou multidimensionnelle. Ces situations sont souvent induites par des impératifs professionnels, tels que le partage de la base de données entre un groupe de serveurs Analysis Services pour le confort de l'utilisateur.
Vous pouvez basculer d'un mode de base de données à un autre de différentes façons. Ce document explique les scénarios courants suivants :
Par interaction à l'aide de SQL Server Management Studio
Par programmation à l'aide d'AMO
Par script à l'aide de XMLA
Procédures
Pour basculer interactivement le mode lecture/écriture d'une base de données à l'aide de Management Studio
Localisez la base de données à basculer dans le volet gauche ou droit de Management Studio.
Cliquez avec le bouton droit sur la base de données et choisissez Propriétés. Recherchez le dossier de base de données et notez l'emplacement. Un emplacement de stockage de base de données vide indique que le dossier de base de données se trouve dans le dossier de données de serveur.
Important
Dès que la base de données est détachée, Management Studio ne peut plus vous aider à obtenir l'emplacement de base de données.
Cliquez avec le bouton droit sur la base de données et choisissez Détacher.
Assignez un mot de passe à la base de données à détacher, puis cliquez sur OK pour exécuter la commande de détachement.
Recherchez le dossier Bases de données dans le volet gauche ou droit de Management Studio.
Cliquez avec le bouton droit sur le dossier Bases de données et sélectionnez Attacher.
Dans la zone de texte dossier, tapez l'emplacement d'origine du dossier de base de données. Vous pouvez également utiliser le bouton Parcourir (…) pour rechercher le dossier de base de données.
Sélectionnez le mode lecture/écriture pour la base de données.
Tapez le mot de passe qui a été utilisé dans l'étape 3 et cliquez sur OK pour exécuter la commande d'attachement.
Pour basculer par programmation le mode lecture/écriture sur une base de données à l'aide d'AMO
- Dans votre application C#, adaptez l'exemple de code suivant et complétez les tâches indiquées.
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);
}
}
Dans votre application C#, appelez SwitchReadWrite() avec les paramètres nécessaires.
Compilez et exécutez le code pour déplacer la base de données.
Pour basculer le mode lecture/écriture sur une base de données par script à l'aide de XMLA
Localisez la base de données à basculer dans le volet gauche ou droit de Management Studio.
Cliquez avec le bouton droit sur la base de données et choisissez Propriétés. Recherchez le dossier de base de données et notez l'emplacement. Un emplacement de stockage de base de données vide indique que le dossier de base de données se trouve dans le dossier de données de serveur.
Important
Dès que la base de données est détachée, Management Studio ne peut plus vous aider à obtenir l'emplacement de base de données.
Ouvrez un nouvel onglet XMLA dans Management Studio.
Copiez le modèle de script suivant pour XMLA :
<Detach xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>%dbName%</DatabaseID>
<Password>%password%</Password>
</Object>
</Detach>
Remplacez %dbName% par le nom de la base de données et %password% par le mot de passe. Les caractères % font partie du modèle et doivent être supprimés.
Exécutez la commande XMLA.
Copiez le modèle de script suivant pour XMLA dans un nouvel onglet 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>
Remplacez %dbFolder% par le chemin UNC complet du dossier de base de données, %ReadOnlyMode% par la valeur ReadOnly correspondante ou ReadWrite, et %password% par le mot de passe. Les caractères % font partie du modèle et doivent être supprimés.
Exécutez la commande XMLA.
Voir aussi
Référence
Attach
Concepts
Attacher et détacher des bases de données Analysis Services