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

S’applique à : SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

SQL Server Analysis Services administrateurs de base de données peuvent modifier le mode de lecture/écriture d’une base de données tabulaire ou multidimensionnelle dans le cadre d’un effort plus important qui distribue une charge de travail de requête entre plusieurs serveurs de requête uniquement.

Vous pouvez basculer d’un mode de base de données vers un autre de plusieurs 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 ou de TMSL

Basculer interactivement le mode lecture/écriture d’une base de données à l’aide de Management Studio

  1. Dans Explorateur d'objets, cliquez avec le bouton droit sur la base de données et sélectionnez Propriétés.

    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.

  2. Cliquez avec le bouton droit sur la base de données et sélectionnez Détacher...

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

  4. Dans Explorateur d'objets, cliquez avec le bouton droit sur le dossier Bases de données et sélectionnez Attacher...

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

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

  7. Tapez le mot de passe, puis cliquez sur OK pour exécuter la commande d’attachement.

Basculer par programmation le mode lecture/écriture d’une base de données à l’aide d’AMO

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.

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 dataDir = server.ServerProperties["DataDir"].Value;  
                 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);  
    }  
}  
  

Basculer par script le mode lecture/écriture d’une base de données à l’aide de XMLA

Les instructions ci-après s’appliquent aux bases de données multidimensionnelles et tabulaires présentant le mode de compatibilité 1050, 1100 ou 1103.

  1. Dans Explorateur d'objets, cliquez avec le bouton droit sur la base de données et sélectionnez Propriétés.

    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.

  2. Cliquez avec le bouton droit sur la base de données et sélectionnez Détacher...

  3. Ouvrez un nouvel onglet XMLA dans Management Studio.

  4. Copiez le modèle de script suivant pour XMLA :

    <Detach xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">  
       <Object>  
          <DatabaseID>%dbName%</DatabaseID>  
          <Password>%password%</Password>  
       </Object>  
    </Detach>  
    
  5. 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.

  6. Exécutez la commande XMLA.

  7. Copiez le modèle de script suivant pour XMLA dans un nouvel onglet XMLA.

    <Attach xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">  
       <Folder>%dbFolder%</Folder>  
       <ReadWriteMode xmlns="http://schemas.microsoft.com/analysisservices/2008/engine/100">%ReadOnlyMode%</ReadWriteMode>  
    </Attach>  
    
  8. Remplacez %dbFolder% par le chemin UNC complet du dossier de base de données, %ReadOnlyMode% par la valeur ReadOnly ou ReadWritecorrespondante, et %password% par le mot de passe. Les caractères % font partie du modèle et doivent être supprimés.

  9. Exécutez la commande XMLA.

Voir aussi

Haute disponibilité et extensibilité dans Analysis Services
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