Pregunta Mover los archivos de base de datos de SQL Server 2008 a una nueva ubicación de carpeta


Nombre lógico

  • my_Data
  • my_Log

Camino:

  • C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
  • C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA

Nombre del archivo:

  • my.MDF
  • my_1.LDF

¿Cuál sería la secuencia de comandos sql para mover estos archivos a una nueva ubicación? D:\DATA

La base de datos está activa así que necesitaría cerrar las conexiones existentes.


49
2017-07-05 15:11


origen


Respuestas:


Olvidó mencionar el nombre de su base de datos (¿es "mi"?).

ALTER DATABASE my SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

ALTER DATABASE my SET OFFLINE;

ALTER DATABASE my MODIFY FILE 
(
   Name = my_Data,
   Filename = 'D:\DATA\my.MDF'
);

ALTER DATABASE my MODIFY FILE 
(
   Name = my_Log, 
   Filename = 'D:\DATA\my_1.LDF'
);

Ahora aquí debe mover manualmente los archivos desde su ubicación actual a D: \ Data \ (y recuerde cambiarles el nombre manualmente si los cambió en el comando MODIFY FILE) ... luego puede volver a poner la base de datos en línea:

ALTER DATABASE my SET ONLINE;

ALTER DATABASE my SET MULTI_USER;

Esto supone que la cuenta de servicio de SQL Server tiene suficientes privilegios en la carpeta D: \ Data \. Si no, recibirás errores en el comando SET ONLINE.


85
2017-07-05 15:31



Puede usar la opción Separar / Adjuntar en SQL Server Management Studio.

Mira esto: Mover una base de datos usando Detach y Attach


18
2017-07-05 16:26



Para agregar los privilegios necesarios a los archivos, agregue y otorgue derecho al siguiente usuario local: SQLServerMSSQLUser $ COMPUTERNAME $ INSTANCENAME, donde NOMBRE DE LA COMPUTADORA y NOMBRE DE INSTANCIA tiene que ser reemplazado con el nombre de la computadora y la instancia MSSQL respectivamente.


6
2018-05-13 14:42



Este es un procedimiento completo para transferir la base de datos y los inicios de sesión de un servidor a uno nuevo, inicios de scripts y reubicación de archivos de datos y registro en el destino. Todo usando metascripts.

http://zaboilab.com/sql-server-toolbox/massive-database-migration-between-sql-server-instances-the-complete-procedure

Lo siento por el procedimiento fuera del sitio, pero los scripts son muy largos. Tienes que:
- Inicio de sesión de script con SID original y contraseña HASHED
- Crear script para respaldar la base de datos usando metascripts
- Crear secuencia de comandos para restaurar la base de datos que pasa los parámetros de reubicación utilizando nuevamente metascripts
- Ejecutar los scripts generados en la instancia de origen y destino.
Ver detalles y descargar guiones siguiendo el enlace de arriba.


0
2018-05-23 21:11



Algunas notas para complementar el proceso ALTER DATABASE:

1) Puede obtener una lista completa de bases de datos con nombres lógicos y rutas completas de archivos MDF y LDF:

   USE master SELECT name, physical_name FROM sys.master_files

2) Puede mover manualmente los archivos con el comando de movimiento de CMD:

Mover "Origen" "Destino"

Ejemplo:

md "D:\MSSQLData"
Move "C:\test\SYSADMIT-DB.mdf" "D:\MSSQLData\SYSADMIT-DB_Data.mdf"
Move "C:\test\SYSADMIT-DB_log.ldf" "D:\MSSQLData\SYSADMIT-DB_log.ldf"

3) Debería cambiar la ruta de la base de datos predeterminada para la creación de nuevas bases de datos. La ruta predeterminada se obtiene del registro de Windows.

También puede cambiar con T-SQL, por ejemplo, para establecer el destino predeterminado en: D: \ MSSQLData

USE [master]

GO

EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'D:\MSSQLData'

GO

EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'D:\MSSQLData'

GO

Extraído de: http://www.sysadmit.com/2016/08/mover-base-de-datos-sql-server-a-otro-disco.html


0
2017-08-31 07:54