Basculer une base de données Analysis Services entre les modes ReadOnly et ReadWrite

Il existe souvent des situations où un administrateur de base de données Analysis Services souhaite modifier le mode lecture/écriture d'une base de données. Ces situations sont souvent justifiées par des exigences opérationnelles, telles que le partage de la base de données au sein d'un pool de serveurs Analysis Services pour un plus grand 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

  1. Localisez la base de données à basculer dans le volet gauche ou droit de Management Studio.

  2. 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.

  3. Cliquez avec le bouton droit sur la base de données et choisissez Détacher.

  4. Assignez un mot de passe à la base de données à détacher, puis cliquez sur OK pour exécuter la commande de détachement.

  5. Recherchez le dossier Bases de données dans le volet gauche ou droit de Management Studio.

  6. Cliquez avec le bouton droit sur le dossier Bases de données et sélectionnez Attacher.

  7. 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.

  8. Sélectionnez le mode lecture/écriture pour la base de données.

  9. 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);

}

}

  1. Dans votre application C#, appelez SwitchReadWrite() avec les paramètres nécessaires.

  2. 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

  1. Localisez la base de données à basculer dans le volet gauche ou droit de Management Studio.

  2. 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.

  3. Ouvrez un nouvel onglet XMLA dans Management Studio.

  4. 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>

  1. 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.

  2. Exécutez la commande XMLA.

  3. 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>

  1. Remplacez %dbFolder% par le chemin UNC complet du dossier de base de données, %ReadOnlyMode% par la valeur ReadOnly ou ReadWrite correspondante, et %password% par le mot de passe. Les caractères % font partie du modèle et doivent être supprimés.

  2. Exécutez la commande XMLA.