Partager via


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

Il arrive souvent qu’un administrateur de base de données Analysis Services (dba) souhaite modifier le mode de lecture/écriture d’une base de données tabulaire ou multidimensionnelle. Ces situations sont souvent pilotées par des besoins métier, tels que le partage de la base de données entre un pool de serveurs Analysis Services pour une meilleure expérience 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 :

  • Utilisation interactive 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. Recherchez 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 sélectionnez 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 la base de données.

  3. Cliquez avec le bouton droit sur la base de données et sélectionnez 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 localiser 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 utilisé à l’étape 3, puis cliquez sur OK pour exécuter la commande attach.

Pour basculer par programmation le mode lecture/écriture sur une base de données à l'aide d'AMO

  1. 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. Recherchez 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 sélectionnez 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 la 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 correspondante ou ReadWrite, 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.

Voir aussi

Attach*
Microsoft.AnalysisServices.Database.Detach*
Attacher et détacher des bases de données Analysis Services
Emplacement de stockage de la base de données
Base de données ReadWriteModes
Élément Attach
Élément Detach
ReadWriteMode, élément
DbStorageLocation, élément