Juan Carlos, just this topic I have to address in a job.
As you know SQL allows the execution of cmd commands. With the command that you previously named you can move a database from one route to another, then you must tell the database engine what the new address is.
I have attached a script that has served me for this 100%
-- Mostramos las rutas actuales de la base de datos.
USE master SELECT name, physical_name FROM sys.master_files
-- Tomamos nota de los datos de la BD que queremos mover, por ejemplo:
--
-- SYSADMIT-DB C:\test\SYSADMIT-DB.mdf
-- SYSADMIT-DB_log C:\test\SYSADMIT-DB_log.ldf
--
-- Siendo la primera columna el nombre lógico de la base de datos y
-- la segunda columna la ruta física
--
GO
-- Situamos la base de datos a offline, haciendo el rollback inmediato de
-- todas las transacciones abiertas.
ALTER DATABASE "SYSADMIT-DB" SET offline WITH ROLLBACK IMMEDIATE;
GO
-- Procedemos a mover los ficheros, por ejemplo desde CMD con el comando move.
-- Abrimos una ventana de CMD y ejecutamos:
--
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"
-- Modificamos la ruta del MDF de la base de datos.
-- El nombre lógico de la base de datos está obtenido después de la ejecución
-- del primer comando.
ALTER DATABASE "SYSADMIT-DB" MODIFY FILE ( NAME = "SYSADMIT-DB", FILENAME = "D:\MSSQLData\SYSADMIT-DB_Data.mdf")
GO
-- Modificamos la ruta del LDF de la base de datos.
-- El nombre de la base de datos está obtenido después de la ejecución del primer comando.
ALTER DATABASE "SYSADMIT-DB" MODIFY FILE ( NAME = "SYSADMIT-DB_Log", FILENAME = "D:\MSSQLData\SYSADMIT-DB_Log.ldf")
GO
-- Situamos la base de datos online.
ALTER DATABASE "SYSADMIT-DB" SET online
GO
-- Mostramos las rutas actuales de las base de datos
USE master SELECT name, physical_name FROM sys.master_files
If I have any questions, I am available.
Greetings
Ignacio Loyte