Partager via


Basculer une base de données d'Analysis Services entre les modes LectureSeule et LectureÉcriture

Il existe souvent des situations où un administrateur de base de données Analysis Services (dba) souhaite modifier le mode 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.

Un mode de base de données peut être basculé de plusieurs façons. Ce document décrit les scénarios courants suivants :

  • Utilisation interactive de SQL Server Management Studio

  • Utilisation par programmation d’AMO

  • Par script à l’aide de XMLA

Procédures

Pour changer le mode lecture/écriture d’une base de données de manière interactive à l’aide de Management Studio

  1. Identifiez la base de données à changer 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 du 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. Affectez un mot de passe à la base de données à détacher, puis cliquez sur OK pour exécuter la commande détacher.

  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 du 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 de 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 le mode lecture/écriture vers une base de données par programmation à l’aide d’AMO

  1. Dans votre application C#, adaptez l’exemple de code suivant et effectuez 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 votre code pour déplacer la base de données.

Pour basculer le mode lecture/écriture vers une base de données à l’aide de XMLA

  1. Repérez la base de données à transférer 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 du 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 ReadWritepar %password% 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 du stockage de base de données
Modes de Lecture/Écriture de la Base de Données
Attacher l'élément
Détacher l’élément
Élément ReadWriteMode
Élément DbStorageLocation