Compartir a través de


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

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.

Un modo de base de datos se puede cambiar de muchas maneras. En este documento se explican los siguientes escenarios comunes:

  • Uso interactivo de SQL Server Management Studio

  • Uso de AMO mediante programación

  • Utilizando un script con XMLA

Procedimientos

Para cambiar el modo de lectura y 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 la ubicación. Una ubicación de almacenamiento de base de datos vacía indica que la carpeta de base de datos se encuentra 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 a desasociar y, a continuación, haga clic en Aceptar para ejecutar el comando de desasociación.

  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 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 y escritura de 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 y escritura de una base de datos utilizando AMO programáticamente

  1. En la aplicación de 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 de 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 y escritura a una base de datos mediante script mediante 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 la ubicación. Una ubicación de almacenamiento de base de datos vacía indica que la carpeta de base de datos se encuentra 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 siguiente plantilla de script para XMLA:

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

<Object>

<DatabaseID>%dbName%</DatabaseID>

<Password>%password%</Password>

</Object>

</Detach>

  1. Reemplace por %dbName% 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 siguiente plantilla de script 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 por %dbFolder% la ruta de acceso UNC completa de la carpeta de base de datos, %ReadOnlyMode% con el valor ReadOnly correspondiente o ReadWritey %password% con la contraseña. Los caracteres % forman parte de la plantilla y se deben quitar.

  2. Ejecute el comando XMLA.

Véase también

Attach*
Microsoft.AnalysisServices.Database.Detach*
Adjuntar y desconectar bases de datos de Analysis Services
Ubicación de almacenamiento de base de datos
Modos de Lectura/Escritura de Base de Datos
Adjuntar Elemento
Desacoplar Elemento
Elemento Modo de Lectura/Escritura
Elemento DbStorageLocation