Cambiar entre los modos ReadOnly y ReadWrite en una base de datos de Analysis Services

A menudo hay situaciones en las que un administrador de bases de datos (dba) de Analysis Services quiere cambiar el modo de lectura y escritura de una base de datos tabular o multidimensional. Estas situaciones suelen estar controladas por las necesidades empresariales, como compartir la base de datos entre un grupo de servidores de Analysis Services para mejorar la experiencia del usuario.

El modo de una base de datos se puede cambiar de muchas formas. En este documento se describen los siguientes escenarios comunes:

  • Uso interactivo de SQL Server Management Studio

  • Usar programación a través de AMO

  • Usar script XMLA

Procedimientos

Para cambiar el modo de lectura/escritura de una base de datos de forma interactiva mediante Management Studio

  1. Busque la base de datos que se va a cambiar en el panel izquierdo o derecho de Management Studio.

  2. Haga clic con el botón derecho en la base de datos y seleccione Propiedades. Busque la carpeta de la base de datos y anote su ubicación. Una ubicación de almacenamiento de la base de datos vacía indica que la carpeta de la base de datos está ubicada en la carpeta de datos del servidor.

    Importante

    En cuanto se desasocie la base de datos, Management Studio ya no puede ayudarle a obtener la ubicación de la base de datos.

  3. Haga clic con el botón derecho en la base de datos y seleccione Desasociar...

  4. Asigne una contraseña a la base de datos que se va separar y, a continuación, haga clic en Aceptar para ejecutar el comando Detach.

  5. Busque la carpeta Bases de datos en el panel izquierdo o derecho de Management Studio.

  6. Haga clic con el botón derecho en la carpeta Bases de datos y seleccione Asociar...

  7. En el cuadro de texto Carpeta , escriba la ubicación original de la carpeta de la base de datos. Como alternativa, puede usar el botón Examinar (...) para buscar la carpeta de la base de datos.

  8. Seleccione el modo de lectura/escritura para la base de datos.

  9. Escriba la contraseña que se usó en el paso 3 y haga clic en Aceptar para ejecutar el comando attach.

Para cambiar el modo de lectura/escritura de una base de datos mediante programación a través de AMO

  1. En la aplicación C#, adapte el código de ejemplo siguiente y complete las tareas indicadas.

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. En la aplicación C#, invoque SwitchReadWrite() con los parámetros necesarios.

  2. Compile y ejecute el código para mover la base de datos.

Para cambiar el modo de lectura/escritura de una base de datos mediante script XMLA

  1. Busque la base de datos que se va a cambiar en el panel izquierdo o derecho de Management Studio.

  2. Haga clic con el botón derecho en la base de datos y seleccione Propiedades. Busque la carpeta de la base de datos y anote su ubicación. Una ubicación de almacenamiento de la base de datos vacía indica que la carpeta de la base de datos está ubicada en la carpeta de datos del servidor.

    Importante

    En cuanto se desasocie la base de datos, Management Studio ya no puede ayudarle a obtener la ubicación de la base de datos.

  3. Abra una nueva pestaña XMLA en Management Studio.

  4. Copie la plantilla de script siguiente para XMLA:

<Detach xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">

<Object>

<DatabaseID>%dbName%</DatabaseID>

<Password>%password%</Password>

</Object>

</Detach>

  1. Reemplace %dbName% por el nombre de la base de datos y %password% por la contraseña. Los caracteres % forman parte de la plantilla y se deben quitar.

  2. Ejecute el comando XMLA.

  3. Copie la plantilla de script siguiente para XMLA en una nueva pestaña 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. Reemplace %dbFolder% por la ruta UNC completa de la carpeta de la base de datos, %ReadOnlyMode% por el valor ReadOnly o ReadWrite correspondiente, y %password% por la contraseña. Los caracteres % forman parte de la plantilla y se deben quitar.

  2. Ejecute el comando XMLA.

Consulte también

Attach*
Microsoft.AnalysisServices.Database.Detach*
Adjuntar y separar bases de datos de Analysis Services
Ubicación de almacenamiento de las bases de datos
Modos de la propiedad de base de datos ReadWriteMode
Elemento Attach
Elemento Detach
Elemento ReadWriteMode
Elemento DbStorageLocation