Mover bases de datos del sistema
Se aplica a: SQL Server
En este artículo se describe cómo mover bases de datos del sistema en SQL Server. Mover bases de datos del sistema puede resultar útil en las situaciones siguientes:
Recuperación de un error. Por ejemplo, la base de datos se encuentra en modo sospechoso o se ha cerrado a causa de un error de hardware.
Reubicación planeada.
Reubicación para el mantenimiento planeado del disco.
Los siguientes procedimientos se aplican para mover archivos de base de datos dentro de una misma instancia de SQL Server. Para mover una base de datos a otra instancia de SQL Server o a otro servidor, use la operación copia de seguridad y restauración.
Los procedimientos descritos en este artículo requieren el nombre lógico de los archivos de la base de datos. Para obtener el nombre, consulte la columna de nombre de la vista de catálogo sys.master_files .
Importante
Si se mueve una base de datos del sistema y posteriormente se vuelve a generar la base de datos master
, se debe mover de nuevo la base de datos del sistema porque la operación de regeneración instala todas las bases de datos del sistema en su ubicación predeterminada.
Mover bases de datos del sistema
Para mover un archivo de registro o datos de bases de datos del sistema como parte de una operación de reubicación planeada o de mantenimiento programado, siga estos pasos. Esto incluye las bases de datos del sistema model
, msdb
y tempdb
.
Importante
Este procedimiento se aplica a todas las bases de datos del sistema, excepto a las bases de datos master
y Resource
. Consulte más adelante en este artículo los pasos para mover la base de datos master
. La base de datos Resource
no se puede mover.
Registre la ubicación existente de los archivos de base de datos que desea mover; para ello, revise la vista de catálogo sys.master_files.
Compruebe que la cuenta de servicio del motor de base de datos de SQL Server tenga permisos completos para la nueva ubicación de los archivos. Para obtener más información, consulte Configurar los permisos y las cuentas de servicio de Windows. Si la cuenta de servicio del motor de base de datos no puede controlar los archivos en su nueva ubicación, la instancia de SQL Server no se iniciará.
Para cada archivo que se vaya a mover, ejecute la siguiente instrucción.
ALTER DATABASE database_name MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');
Hasta que se reinicie el servicio, la base de datos sigue usando los archivos de datos y de registro de la ubicación existente.
Detenga la instancia de SQL Server para realizar el mantenimiento. Para más información, consulte Inicio, detención, pausa, reanudación y reinicio de servicios de SQL Server.
Copie el archivo o los archivos de la base de datos en la nueva ubicación. Tenga en cuenta que este no es un paso necesario para la base de datos del sistema
tempdb
, ya que esos archivos se crean automáticamente en la nueva ubicación.Reinicie la instancia de SQL Server o el servidor. Para más información, consulte Inicio, detención, pausa, reanudación y reinicio de servicios de SQL Server.
Compruebe el cambio de los archivos ejecutando la consulta siguiente. Las bases de datos del sistema deben comunicar las nuevas ubicaciones de los archivos físicos.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
Puesto que en el paso 5 copió los archivos de base de datos en lugar de moverlos, ahora puede eliminar de forma segura los archivos de base de datos no usados de su ubicación anterior.
Seguimiento: después de mover todas las bases de datos del sistema msdb
Si la base de datos msdb
se mueve y está configurada la característica Correo electrónico de base de datos, realice los pasos adicionales siguientes.
Compruebe que Service Broker se haya habilitado para la base de datos
msdb
; para ello, ejecute la consulta siguiente.SELECT is_broker_enabled FROM sys.databases WHERE name = N'msdb';
Si Service Broker no está habilitado para
msdb
, debe volver a habilitarse para que la característica Correo electrónico de base de datos funcione. Para más información, consulte ALTER DATABASE ... SET ENABLE_BROKER.ALTER DATABASE msdb SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
Confirme que el valor de
is_broker_enabled
ahora sea 1.Envíe un mensaje de correo electrónico para comprobar que el Correo electrónico de base de datos funciona.
Procedimiento de recuperación de errores
Si se debe mover un archivo a causa de un error de hardware, siga los pasos que se indican a continuación para colocar el archivo en otra ubicación. Este procedimiento se aplica a todas las bases de datos del sistema, excepto a las bases de datos master
y Resource
. En los ejemplos siguientes se usa el símbolo del sistema de Windows y la utilidad sqlcmd.
Importante
Si no se puede iniciar la base de datos, si se encuentra en modo sospechoso o en un estado no recuperado, solo los miembros del rol fijo sysadmin podrán mover el archivo.
Compruebe que la cuenta de servicio del motor de base de datos de SQL Server tenga permisos completos para la nueva ubicación de los archivos. Para obtener más información, consulte Configurar los permisos y las cuentas de servicio de Windows. Si la cuenta de servicio del motor de base de datos no puede controlar los archivos en su nueva ubicación, la instancia de SQL Server no se iniciará.
Detenga la instancia de SQL Server si se inició.
Inicie la instancia de SQL Server en modo de recuperación solo de
master
especificando uno de los siguientes comandos en el símbolo del sistema. El uso del parámetro de inicio 3608 impide a SQL Server iniciar y recuperar automáticamente cualquier base de datos excepto la base de datosmaster
. Para más información, consulte Parámetros de inicio y TF3608.Los parámetros especificados en estos comandos distinguen entre mayúsculas y minúsculas. Los comandos generan un error cuando los parámetros no se especifican como se indica.
Para la instancia predeterminada (MSSQLSERVER), ejecute el siguiente comando:
NET START MSSQLSERVER /f /T3608
Para una instancia con nombre, ejecute el siguiente comando:
NET START MSSQL$instancename /f /T3608
Para más información, consulte Inicio, detención, pausa, reanudación y reinicio de servicios de SQL Server.
Inmediatamente después del inicio del servicio con la marca de seguimiento 3608 y
/f
, inicie una conexión sqlcmd con el servidor para reclamar la conexión única que está disponible. Por ejemplo, al ejecutar sqlcmd localmente en el mismo servidor que la instancia predeterminada (MSSQLSERVER) y para conectarse con la autenticación de integración de Active Directory, ejecute el siguiente comando:sqlcmd
Para conectarse a una instancia con nombre en el servidor local, con la autenticación de integración de Active Directory:
sqlcmd -S localhost\instancename
Para más información sobre la sintaxis de sqlcmd, consulte Utilidad sqlcmd.
En cada uno de los archivos que se van a mover, use los comandos sqlcmd o SQL Server Management Studio para ejecutar la siguiente instrucción. Para obtener más información sobre cómo usar la utilidad sqlcmd, vea Usar la utilidad sqlcmd. Una vez abierta la sesión de sqlcmd, ejecute la siguiente instrucción una vez para mover cada archivo:
ALTER DATABASE database_name MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name'); GO
Salga de la utilidad sqlcmd o SQL Server Management Studio para ello.
Detenga la instancia del Agente SQL Server. Por ejemplo, ejecute
NET STOP MSSQLSERVER
en el símbolo del sistema.Copie el archivo o los archivos a la nueva ubicación.
Reinicie la instancia de SQL Server. Por ejemplo, ejecute
NET START MSSQLSERVER
en el símbolo del sistema.Compruebe el cambio de los archivos ejecutando la consulta siguiente.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
Puesto que en el paso 7 copió los archivos de base de datos en lugar de moverlos, ahora puede eliminar de forma segura los archivos de base de datos no usados de su ubicación anterior.
Mover la base de datos master
Para mover la base de datos master
, siga estos pasos.
Compruebe que la cuenta de servicio del motor de base de datos de SQL Server tenga permisos completos para la nueva ubicación de los archivos. Para obtener más información, consulte Configurar los permisos y las cuentas de servicio de Windows. Si la cuenta de servicio del motor de base de datos no puede controlar los archivos en su nueva ubicación, la instancia de SQL Server no se iniciará.
En el menú Inicio, busque e inicie el Administrador de configuración de SQL Server. Para más información sobre la ubicación esperada, consulte Administrador de configuración de SQL Server.
En el nodo Servicios de SQL Server, haga clic con el botón derecho en la instancia de SQL Server (por ejemplo, SQL Server (MSSQLSERVER)) y elija Propiedades.
En el cuadro de diálogo Propiedades (nombre_de_instancia) de SQL Server, seleccione la pestaña Propiedades de inicio.
En el cuadro Parámetros existentes, seleccione el parámetro
-d
. En el cuadro Specify a startup parameter (Especificar un parámetro de inicio), cambie el parámetro a la nueva ruta de acceso del archivomaster
data. Seleccione Actualizar para guardar el cambio.En el cuadro Parámetros existentes, seleccione el parámetro
-l
. En el cuadro Specify a startup parameter (Especificar un parámetro de inicio), cambie el parámetro a la nueva ruta de acceso del archivomaster
log. Seleccione Actualizar para guardar el cambio.El valor de parámetro del archivo de datos debe ir a continuación del parámetro
-d
y el valor del archivo de registro debe ir a continuación del parámetro-l
. En el siguiente ejemplo se muestran los valores de los parámetros para la ubicación predeterminada del archivo de datosmaster
.-dC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\master.mdf -lC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
Si la reubicación planeada del archivo de datos
master
esE:\SQLData
, los valores de los parámetros cambiarían de la siguiente manera:-dE:\SQLData\master.mdf -lE:\SQLData\mastlog.ldf
Seleccione Aceptar para guardarlos cambios de forma permanente y cierre el cuadro de diálogo Propiedades (nombre_instancia) de SQL Server.
Para detener la instancia de SQL Server, haga clic con el botón derecho en el nombre de la instancia y elija Detener.
Copie los archivos
master.mdf
ymastlog.ldf
a la nueva ubicación.Reinicie la instancia de SQL Server.
Compruebe el cambio de los archivos de la base de datos
master
ejecutando la siguiente consulta.SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID('master');
En este punto, SQL Server se debería ejecutar con normalidad. Sin embargo, Microsoft también recomienda ajustar la entrada del Registro en
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setup
, donde instance_ID es similar aMSSQL13.MSSQLSERVER
. En ese subárbol, cambie el valorSQLDataRoot
a la nueva ruta de acceso de la nueva ubicación de los archivos de base de datosmaster
. Si no actualiza el Registro, puede que la aplicación de revisiones y las actualizaciones presenten errores.Puesto que en el paso 9 copió los archivos de base de datos en lugar de moverlos, ahora puede eliminar de forma segura los archivos de base de datos no usados de su ubicación anterior.
Mover la base de datos de recursos
La ubicación de la base de datos Resource
es \<drive>:\Program Files\Microsoft SQL Server\MSSQL\<version>.<instance_name>\MSSQL\Binn\
. La base de datos no se puede mover.
Seguimiento: después de mover todas las bases de datos del sistema
Si ha movido todas las bases de datos del sistema a una nueva unidad o volumen o a otro servidor con una letra de unidad diferente, realice las actualizaciones siguientes.
Cambie la ruta de acceso del registro del Agente SQL Server. Si no actualiza esta ruta de acceso, el Agente SQL Server no se podrá iniciar.
Cambie la ubicación predeterminada de la base de datos. Si la letra de unidad y la ruta de acceso especificada como ubicación predeterminada no existen, es posible que no se pueda crear una nueva base de datos.
Cambiar la ruta de acceso del registro del Agente SQL Server
Si ha movido todas las bases de datos del sistema a un nuevo volumen o las ha migrado a otro servidor con una letra de unidad diferente y la ruta del archivo de registro de errores de Agente SQL SQLAGENT.OUT
ya no existe, realice las actualizaciones siguientes.
En SQL Server Management Studio, en el Explorador de objetos, expanda Agente SQL Server.
Haga clic con el botón derecho en Registros de errores y seleccione Configurar.
En el cuadro de diálogo Configurar registros de errores del Agente SQL Server , especifique la nueva ubicación del archivo SQLAGENT.OUT. La ubicación predeterminada es
C:\Program Files\Microsoft SQL Server\MSSQL\<version>.<instance_name>\MSSQL\Log\
.
Cambiar la ubicación predeterminada de la base de datos
En SQL Server Management Studio, en el Explorador de objetos, conéctese a la instancia deseada de SQL Server. Haga clic con el botón derecho en la instancia y seleccione Propiedades.
En el cuadro de diálogo Propiedades del servidor , seleccione Configuración de base de datos.
En Ubicaciones predeterminadas de la base de datos, busque la nueva ubicación de los archivos de registro y datos.
Detenga e inicie el servicio SQL Server para completar el cambio.
Ejemplos
A Mover la base de datos tempdb
En el ejemplo siguiente se mueven los archivos de datos y registro de tempdb
a una nueva ubicación como parte de una reubicación planeada.
Sugerencia
Aproveche esta oportunidad para revisar los archivos tempdb
a fin de comprobar que el tamaño y la ubicación sean adecuados. Para más información, consulte Optimización del rendimiento de tempdb en SQL Server.
Puesto que tempdb
se vuelve a crear cada vez que se inicia la instancia de SQL Server, no hay que mover físicamente los archivos de datos y de registro. Los archivos se crean en la ubicación nueva cuando se reinicia el servicio en el paso 4. Hasta que se reinicie el servicio, tempdb
sigue utilizando los archivos de datos y de registro de la ubicación existente.
Determine los nombres de los archivos lógicos de la base de datos
tempdb
y su ubicación actual en el disco.SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID(N'tempdb'); GO
Compruebe que la cuenta de servicio del motor de base de datos de SQL Server tenga permisos completos para la nueva ubicación de los archivos. Para obtener más información, consulte Configurar los permisos y las cuentas de servicio de Windows. Si la cuenta de servicio del motor de base de datos no puede controlar los archivos en su nueva ubicación, la instancia de SQL Server no se iniciará.
Cambie la ubicación de cada archivo con
ALTER DATABASE
.USE master; GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf'); GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf'); GO
Hasta que se reinicie el servicio,
tempdb
sigue utilizando los archivos de datos y de registro de la ubicación existente.Detenga y reinicie la instancia de SQL Server.
Compruebe el cambio de los archivos.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'tempdb');
Elimine los archivos
tempdb
sin usar de la ubicación original.
Contenido relacionado
- Base de datos de recursos
- Base de datos tempdb
- Base de datos maestra
- Base de datos msdb
- Base de datos modelo
- Mover bases de datos de usuario
- Mover archivos de base de datos
- Inicio, detención, pausa, reanudación y reinicio de servicios de SQL Server
- ALTER DATABASE (Transact-SQL)
- Regeneración de las bases de datos del sistema