Mover bases de datos (Analysis Services)
Con frecuencia se producen situaciones en las que un administrador de bases de datos de Analysis Services desea mover una base de datos a otra ubicación. Estas situaciones suelen responder a necesidades empresariales, como mover la base de datos a otro disco para mejorar el rendimiento, disponer de más espacio para que la base de datos pueda crecer o actualizar un producto.
Una base de datos se puede mover de muchas maneras. En este documento se describen los siguientes escenarios comunes:
Usar SSMS de forma interactiva
Usar programación a través de AMO
Usar scripts XMLA
En todos los escenarios se requiere que el usuario tenga acceso a la carpeta de la base de datos y que use un método para mover los archivos al destino final deseado.
Nota
Si se separa una base de datos sin asignarla antes una contraseña, quedará desprotegida. Se recomienda asignar una contraseña a la base de datos para proteger la información confidencial. Además, se deberá aplicar la seguridad de acceso correspondiente a la carpeta, las subcarpetas y los archivos de la base de datos para impedir el acceso no autorizado.
Procedimientos
Mover una base de datos interactivamente mediante SSMS
Localice la base de datos que desea mover en el panel izquierdo o derecho de SSMS.
Haga clic con el botón secundario del mouse en la base de datos y seleccione Separar.
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.
Use cualquier mecanismo del sistema operativo o el método que emplee normalmente para mover archivos con objeto de mover la carpeta de la base de datos a la nueva ubicación.
Localice la carpeta Bases de datos en el panel izquierdo o derecho de SSMS.
Haga clic con el botón secundario del mouse en la carpeta Bases de datos y seleccione Adjuntar
En el cuadro de texto Carpeta, escriba la nueva ubicación de la carpeta de la base de datos. También puede usar el botón Examinar (…) para localizar la carpeta de la base de datos.
Seleccione el modo ReadWrite para la base de datos.
Escriba la contraseña que se usó en el paso 3 y haga clic en Aceptar para ejecutar el comando Attach.
Mover una base de datos mediante programación a través de AMO
- En la aplicación C#, adapte el código de ejemplo siguiente y complete las tareas indicadas.
private void MoveDb(Server server, string dbName,
string dbInitialLocation, string dbFinalLocation,
string dbPassword, ReadWriteMode dbReadWriteMode)
{
//Verify dbInitialLocation exists before continuing
if (server.Databases.ContainsName(dbName))
{
Database db;
//Save current cursor and change cursor to Cursors.WaitCursor
db = server.Databases[dbName];
db.Detach(dbPassword);
//Add your own code to copy the database files to the destination where you intend to attach the database
//Verify dbFinalLocation exists before continuing
server.Attach(dbFinalLocation, dbReadWriteMode, dbPassword);
//Restore cursor to its original
}
}
En la aplicación C#, invoque MoveDb() con los parámetros necesarios.
Compile y ejecute el código para mover la base de datos.
Mover una base de datos mediante scripts XMLA
Abra una nueva ficha XMLA en SSMS.
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>
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.
Ejecute el comando XMLA.
Use cualquier mecanismo del sistema operativo o el método que emplee normalmente para mover archivos con objeto de mover la carpeta de la base de datos a la nueva ubicación.
Copie la plantilla de script siguiente para XMLA en una nueva ficha 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>
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.
Ejecute el comando XMLA.