sql >> Base de Datos >  >> RDS >> Sqlserver

Bases de datos del sistema SQL Server:conceptos básicos

Introducción

El diseño de SQL Server implica una asignación de uno a muchos entre el motor de la base de datos (instancia) y las bases de datos alojadas en la instancia. Significa que puede implementar varias bases de datos en una instancia del servidor SQL. De acuerdo con la documentación de Microsoft, puede tener hasta 32767 bases de datos en una sola instancia de SQL Server. Por supuesto, habrá limitaciones, como los recursos en el servidor, la gestión de la concurrencia en TempDB, el tráfico de red, etc.

Las bases de datos implementadas en una instancia de SQL Server pueden ser bases de datos del sistema o bases de datos de usuarios. Las bases de datos del sistema vienen instaladas con la instancia. En este artículo, discutiremos el propósito de cada base de datos del sistema. Además, aclararemos lo que debe cuidar al administrar las bases de datos del sistema en SQL Server.

Descripción general de las bases de datos del sistema

Las bases de datos del sistema son parte de muchos procesos que tienen lugar cuando instala una instancia de SQL Server. Por defecto, estas bases de datos se crean en las siguientes rutas:

%archivos de programa%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA

y

%archivos de programa%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log

El camino puede ser diferente. Durante la instalación de SQL Server, puede especificar la ubicación de los archivos de la base de datos del sistema.

Para enumerar todas las bases de datos del sistema en una instancia, puede invocar el código del Listado 1. El Listado 2 se puede usar para determinar la ubicación de los archivos de datos asociados con las bases de datos del sistema. Tenga en cuenta que en ambos scripts, usamos un filtro que devuelve bases de datos con database_id de 5 o superior a 5.

Las bases de datos del sistema "visibles" esenciales tienen ID de base de datos 1,2,3,4:se refieren a master, tempdb, model y msdb, respectivamente. También hay una base de datos "invisible" llamada bases de datos de recursos y otras bases de datos del sistema creadas cuando habilita funciones como la replicación.

-- Listing 1: System Databases
select 
name
,database_id
,create_date
,state_desc
,recovery_model_desc
,log_reuse_wait_desc
,physical_database_name
,is_db_chaining_on
,is_broker_enabled
,is_mixed_page_allocation_on
from sys.databases 
where database_id<5;

-- Listing 2: System Database Files
select 
name
,database_id
,DB_NAME(database_id)
,name
,physical_name
,type_desc
from sys.master_files 
where database_id<5;

Figura 1:Bases de datos del sistema

La base de datos maestra

La base de datos maestra es la primera base de datos abierta al inicio de SQL Server y contiene los siguientes datos:

  • Los registros de la estructura/configuración de la instancia y todas las demás bases de datos.
  • Las vistas de administración más dinámicas que son necesarias para monitorear la instancia.

Por lo tanto, tiene la información necesaria para abrir todas las demás bases de datos. Por eso tiene que ser el primero en abrir. La pregunta es como hacerlo.

Los parámetros de inicio de SQL Server contienen dos entradas, que definen las ubicaciones de los datos de la base de datos maestra y los archivos de registro. Los parámetros de inicio predeterminados incluyen solo tres líneas:la tercera es la ubicación del archivo de registro de errores. Cuando SQL Server se inicia, debe poder escribir en ese archivo de registro de errores.

La base de datos maestra se abre primero. La información almacenada en la base de datos maestra, incluidas las configuraciones definidas mediante sp_configure, se aplica para abrir otras bases de datos y completar el proceso de inicio de la instancia.

Figura 3:Parámetros de inicio de SQL Server

Hay varias formas de obtener información sobre los objetos útiles del sistema SQL Server, como las funciones y las vistas de administración dinámica.

Por ejemplo, expanda las vistas o los nodos de programabilidad para la base de datos maestra en el explorador de objetos. Allí, revise los nombres de estos objetos y obtenga más detalles de Books Online.

También puede migrar inicios de sesión de una instancia a otra. Para ello, restaure una copia de seguridad de la base de datos maestra en la instancia de destino. Describiremos la técnica específica en un artículo separado.

Figura 4:Navegación por los objetos de la base de datos maestra

La base de datos tempDB

La base de datos tempDB es responsable del almacenamiento de datos temporales como resultados intermedios de operaciones pesadas. Podría contener reconstrucciones de índices, versiones de filas de bases de datos configuradas con niveles de aislamiento y otras funciones que dependen del control de versiones de filas, como READ_COMMITTED_SNAPSHOT.

La mayoría de la gente consideraría a tempDB como un posible cuello de botella en el rendimiento, ya que las funciones de cada base de datos de usuario en una instancia dependen de tempDB.

Ajustar tempDB debe ser un ejercicio deliberado. Sin embargo, a partir de SQL Server 2016, puede configurar tempDB con precisión durante la instalación de SQL Server. Un artículo anterior describe en detalle cómo debe configurar y monitorear tempDB.

La base de datos modelo

Puede tratar la base de datos modelo como una plantilla. Cada base de datos de usuario creada en una instancia de SQL Server ocupa la configuración de la base de datos modelo. Tiene la misma configuración de tamaño y crecimiento automático, las mismas ubicaciones de archivos, etc. Sin embargo, puede especificar esas configuraciones deliberadamente de una manera diferente en la instrucción CREATE DATABASE.

En esencia, si tiene una aplicación que crea una base de datos por sí misma con la configuración predeterminada, es posible que desee configurar la base de datos modelo. Le garantiza tener cierto control sobre el resultado de estas bases de datos creadas automáticamente.

Experimentemos un poco con esto, usando el código del Listado 3.

-- Listing 3: Using the Model Database
select 
name
,database_id
,DB_NAME(database_id) database_name
,name
,physical_name
,type_desc
,size/1024*8 [size (MB)]
,growth/1024*8 [size (MB)]
from sys.master_files 
where DB_NAME(database_id)='model' or DB_NAME(database_id) like 'EXP%';
GO

create database EXP_BEFORE;
GO

USE [master]
GO
ALTER DATABASE [model] MODIFY FILE ( NAME = N'modeldev', SIZE = 102400KB , FILEGROWTH = 131072KB )
GO
ALTER DATABASE [model] MODIFY FILE ( NAME = N'modellog', SIZE = 102400KB )
GO

create database EXP_AFTER;
GO

select 
name
,database_id
,DB_NAME(database_id) database_name
,name
,physical_name
,type_desc
,size/1024*8 [size (MB)]
,growth/1024*8 [size (MB)]
from sys.master_files 
where DB_NAME(database_id)='model' or DB_NAME(database_id) like 'EXP%';
GO

El código realiza los siguientes pasos:

  1. Consulte los sys.master_files para determinar la configuración utilizada en la base de datos del modelo
  2. Crear una base de datos
  3. Cambie la configuración de crecimiento y crecimiento automático del archivo de la base de datos modelo
  4. Crear otra base de datos
  5. Consultar sys.master_files de nuevo

Preste atención a la única frase para la creación de la base de datos:"CREAR BASE DE DATOS". De esta forma, recoge los ajustes pertenecientes a la base de datos del modelo. Los resultados muestran que la segunda vez que emitimos el comando CREATE DATABASE, la base de datos EXP_AFTER adquirió un tamaño de archivo de 96 GB y un crecimiento automático de 128 MB (consulte la Figura 5).

Figura 5:uso de la base de datos modelo

También vale la pena mencionar que no todas las configuraciones de la base de datos se toman automáticamente de la base de datos del modelo. Por ejemplo, MIXED_PAGE_ALLOCATION se establece en OFF cuando crea una nueva base de datos, aunque esté ON en el modelo y otras bases de datos del sistema.

La base de datos msdb

Puede considerar el msdb como una base de datos del Agente SQL Server. Almacena todos los datos relacionados con los trabajos, el correo de la base de datos, los operadores y la automatización. Los datos relacionados con el envío de registros de transacciones, la replicación, etc., también están allí. Puede verificarlo ejecutando conjuntos de consultas en el Listado 4 en su instancia. Por ejemplo, los objetos relacionados con la automatización están presentes en msdb.

-- Listing 4: Querying msdb Objects

-- Jobs, Alerts, Operators sit in the msdb database ...
select * from msdb..sysjobs
select * from msdb..sysalerts
select * from msdb..sysoperators
select * from msdb..sysmail_allitems

-- ... NOT in the master database
select * from master..sysjobs
select * from master..sysalerts
select * from master..sysoperators
select * from master..sysmail_allitems

Puede aprender mucho sobre los objetos en las bases de datos msdb extrayéndolos e investigándolos en SQL Server Books Online. El enfoque es el mismo que con la base de datos maestra.

Puede migrar trabajos, operadores, etc. de una instancia de SQL Server a otra. Para eso, tome la copia de seguridad de la base de datos msdb de la instancia de origen y restáurela en la instancia de destino. Abordaremos esto en otro artículo.

Epílogo

En este artículo, proporcionamos una descripción general rápida de las bases de datos del sistema.

Las bases de datos del sistema vienen con una instalación de SQL Server por defecto. Comprender varias bases de datos del sistema y sus roles es una excelente ayuda para administrar su instancia de SQL Server.

Puede obtener más información sobre lo que almacenan y comprender cómo administrarlos en Libros en línea y otros artículos en CodingSight.

Referencias

  1. Bases de datos del sistema
  2. Bases de datos y almacenamiento de MS SQL Server
  3. Encadenamiento de propiedad entre bases de datos