Una base de datos de SQL Server contiene archivos de datos primarios, archivos de datos secundarios (opcional) y archivos de registro de transacciones.
Los archivos de datos primario y secundario contienen tablas, objetos de bases de datos, esquemas y datos.
La extensión del archivo de la base de datos principal es *.mdf y la extensión del archivo de datos secundario es *.ndf .
Los archivos de registro de transacciones almacenan todos los cambios realizados por las transacciones (insertar, actualizar y eliminar). Si SQL Server se reinicia inesperadamente o falla, el motor de la base de datos revierte la transacción incompleta antes del punto de falla utilizando el archivo de registro de transacciones.
La extensión del archivo de registro de transacciones es *.ldf . Es posible que desee consultar este artículo para comprender la arquitectura de los archivos de registro de transacciones.
En este artículo, voy a explicar cómo podemos administrar los archivos de la base de datos (archivos MDF) en SQL Server 2019.
El artículo cubrirá los siguientes puntos:
- Vea los detalles del archivo de la base de datos usando DMV y SQL Server Management Studio.
- Adjunte y separe los archivos MDF de las bases de datos de usuario.
- Adjunte y separe los archivos MDF de las bases de datos del sistema.
Ver archivos de base de datos usando vistas de administración dinámica
Para ver los detalles de los archivos mdf de la base de datos, podemos usar sys.database_files y sys.master_files . La consulta debe escribirse de la siguiente manera:
use master
go
select DB_NAME(database_id),
name as [logical Name],
physical_name as [File Location],
state_desc as [State of the file],
Size [Size of data File],
case when convert(varchar,max_size) =-1 then 'Unlimited' else convert(varchar,max_size) end as [Maximum Size]
from sys.master_files where type_desc='ROWS'
and database_id >5
Como el ejemplo se refiere a los detalles de MDF para todas las bases de datos, necesitamos un código diferente para ver los archivos de base de datos específicos. Para ello, utilizamos sys.database_files .
El siguiente script recuperará los detalles de SSISDB base de datos:
use SSISDB
Go
select
name as [logical Name],
physical_name as [File Location],
state_desc as [State of the file],
Size [Size of data File],
case when convert(varchar,max_size) =-1 then 'Unlimited' else convert(varchar,max_size) end as [Maximum Size]
from sys.database_files
Ver los archivos de la base de datos usando SQL Server Management Studio
La opción de ver la lista de archivos MDF disponible en SQL Server Management Studio (SSMS).
En SQL Server Management Studio, conectarse a la instancia de SQL Server. Luego, expanda Bases de datos -> Haga clic derecho en cualquier base de datos -> Haga clic en Propiedades :
En las Propiedades de la base de datos ventana, haga clic en Archivos . Presentará la lista de la base de datos MDF y LDF archivos:
Separe y adjunte los archivos MDF de la base de datos de usuarios
Hay dos formas de separar y adjuntar archivos MDF de la base de datos del usuario:
- Uso de SQL Server Management Studio.
- Usando el script T-SQL.
Adjuntar y separar base de datos usando SSMS
Adjunte la base de datos
Inicie SSMS -> Conéctese a la instancia de SQL Server -> Haga clic derecho en Base de datos -> Haga clic en Adjuntar .
Se abrirá Adjuntar bases de datos ventana. Haz clic en Agregar en esa ventana:
En el nuevo Localizar archivos de base de datos ventana, explore el sistema de archivos para localizar el MDF expediente. Haz doble clic en él.
Los archivos de datos y archivos de registro asociados se completan en los archivos asociados vista de cuadrícula en Adjuntar bases de datos ventana. Haz clic en Aceptar para adjuntar la base de datos.
Una vez que se adjunta la base de datos, puede verla en SQL Server Management Studio:
Separar la base de datos
Inicie el estudio de administración de SQL Server y conéctese a la instancia de SQL Server . Expanda la lista de bases de datos.
Haga clic derecho en la base de datos necesaria -> Tareas -> Haga clic en Separar .
Si desea desconectar a la fuerza a todos los usuarios y procesos conectados a la base de datos, hágalo en Separar base de datos ventana.
Marque las Conexiones de caída opción en Bases de datos para separar sección y haga clic en Aceptar .
Adjuntar y separar la base de datos usando T-SQL
Podemos usar CREAR BASE DE DATOS CON ATTACH consulta con la siguiente sintaxis:
USE [master]
GO
CREATE DATABASE [DatabaseName] ON
( FILENAME = 'Path of Primary Database file (MDF)' ),
( FILENAME = N'Path of Secondary Database file (NDF)' ),
...
...
( FILENAME = N'Path of Transactional Log file (LDF)' )
FOR ATTACH
GO
Para adjuntar la base de datos, ejecute la siguiente consulta T-SQL:
USE [master]
GO
CREATE DATABASE [WideWorldImporters] ON
( FILENAME = N'C:\MSSQL\SQLData\WideWorldImporters.mdf' ),
( FILENAME = N'C:\MSSQL\SQLLog\WideWorldImporters.ldf' ),
( FILENAME = N'C:\MSSQL\SQLData\WideWorldImporters_UserData.ndf' )
FOR ATTACH
GO
Además, podemos ejecutar el sp_detach_db procedimiento almacenado para separar la base de datos.
Si desea desconectar a los usuarios a la fuerza, puede utilizar ALTER DATABASE SET SINGLE_USER comando en el siguiente script:
Use [master]
GO
ALTER DATABASE [WideWorldImporters] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
EXEC sp_detach_db [WideWorldImporters]
GO
Administrar los archivos MDF de la base de datos del sistema
Supongamos que queremos mover los archivos MDF de las bases de datos del sistema (maestro, modelo, msdb y Tempdb) a otra ubicación. Examinemos el proceso.
Mover la base de datos maestra
Para mover el maestro base de datos, abra el administrador de configuración de SQL Server -> Haga clic en Servicios de SQL Server -> Haga clic derecho en el servicio de SQL Server de la instancia de SQL Server deseada (MSSQLSERVER ) -> Haga clic en Propiedades :
Para cambiar el master.mdf ubicación del archivo, haga clic en la ruta del archivo de datos del archivo maestro.
El maestro.mdf el valor de la ruta va seguido de -d y mastlog.ldf el valor de la ruta va seguido de -l
Reemplace estos valores con los siguientes:
Archivo de datos:-dD:\MS_SQL\Data\master.mdf
Archivo de registro:-lD:\MS_SQL\Log\mastlog.ldf
Una vez que se cambien los valores, haga clic en Actualizar como se muestra en la siguiente ilustración:
Haz clic en Aceptar para guardar los valores.
Luego, detenga los servicios de SQL Server y copie los archivos de la base de datos en una nueva ubicación. Una vez finalizado, vuelva a iniciar el servicio SQL.
Ejecute la siguiente consulta para verificar la ubicación del archivo.
select DB_NAME(database_id)[Database Name], physical_name [File Location] from sys.master_files
where DB_NAME(database_id)='master'
Mover la base de datos del modelo
Para mover la base de datos del modelo a otra unidad, primero debemos ejecutar un comando ALTER DATABASE MODIFY FILE. Sirve para cambiar la ubicación en el catálogo del sistema de SQL Server.
Ejecute el siguiente comando:
ALTER DATABASE model
MODIFY FILE (NAME = modeldev, FILENAME = 'D:\MS_SQL\Data\model.mdf');
GO
ALTER DATABASE model
MODIFY FILE (NAME = modellog, FILENAME = 'D:\MS_SQL\Log\modellog.ldf');
GO
Luego, detenga los servicios de SQL Server ejecutando el siguiente comando en PowerShell:
/*Stop SQL Services*/
PS C:\> Stop-Service MSSQLSERVER -Force
/*Start SQL Services*/
PS C:\> Start-Service MSSQLSERVER
Copie el modelo.mdf y modellog.ldf archivos a una nueva ubicación e iniciar los servicios.
Ejecute la siguiente consulta para verificar la ubicación del archivo:
select DB_NAME(database_id)[Database Name], physical_name [File Location] from sys.master_files
where DB_NAME(database_id)='model'
Mover la base de datos MSDB
Para mover MSDB base de datos a otra unidad, ejecute primero un comando ALTER DATABASE MODIFY FILE para cambiar la ubicación en el catálogo del sistema de SQL Server:
ALTER DATABASE msdb
MODIFY FILE (NAME = MSDBData, FILENAME = 'D:\MS_SQL\Data\MSDBData.mdf');
GO
ALTER DATABASE msdb
MODIFY FILE (NAME = MSDBLog, FILENAME = 'D:\MS_SQL\Log\MSDBLog.ldf');
GO
Detenga los servicios de SQL Server ejecutando el siguiente comando en PowerShell:
/*Stop SQL Services*/
PS C:\> Stop-Service MSSQLSERVER -Force
/*Start SQL Services*/
PS C:\> Start-Service MSSQLSERVER
Copie el MSDBData.mdf y MSDBLOg.ldf archivos a la nueva ubicación e iniciar los servicios.
Ejecute la siguiente consulta para verificar la ubicación del archivo:
select DB_NAME(database_id)[Database Name], physical_name [File Location] from sys.master_files
where DB_NAME(database_id)='msdb'
Mover la base de datos TempDB
Para mover la TempDB base de datos a otra unidad, ejecute primero un comando ALTER DATABASE MODIFY FILE para cambiar la ubicación del archivo en el catálogo del sistema de SQL Server:
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'D:\MS_SQL\Data\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp2, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_2.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp3, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_3.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp4, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_4.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp5, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_5.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp6, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_6.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp7, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_7.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp8, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_8.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'D:\MS_SQL\Log\templog.ldf');
GO
Reinicie los servicios de SQL Server ejecutando el siguiente comando en PowerShell:
/*Restart SQL Services*/
PS C:\> Restart-Service MSSQLSERVER -Force
Ejecute la siguiente consulta para verificar la ubicación del archivo:
select DB_NAME(database_id)[Database Name], physical_name [File Location] from sys.master_files
where DB_NAME(database_id)='tempdb'
También puede utilizar la herramienta Registro de transacciones de la empresa Devart, que también incluye la opción de ver los datos de los archivos MDF y LDF.
Resumen
Este artículo explica los archivos de la base de datos de SQL Server y las formas de ver las ubicaciones de los archivos MDF. También describió los procesos de adjuntar y separar las bases de datos e ilustró el proceso paso a paso de mover los archivos de datos de las bases de datos del sistema.