SQL Server, como cualquier otro Sistema Gestor de Bases de Datos, guarda toda la información en bases de datos (incluyendo la información de todas las bases de datos, por extraño que suene); y esto es debido a que en las Reglas de Codd se menciona que un motor de bases de datos relacional administra toda la información en forma de base de datos.
Por ello SQL Server tienes diveras bases de datos de sistema, algunas de ellas son utilizadas para guardar metadatos, otras para operaciones temporales, y otras más utilizadas por servicios adicionales a SQL Server; siendo las principales las siguientes.
Base de datos Master
Es la base de datos principal del todo el SGBD, ya que mantiene toda la información a nivel del sistema del motor de base de datos e inncluye metadatos de todas las instancias, usuarios, servidores vinculados, configuración del sistema, y además tiene el registro de la existencia de las demás bases de datos (nombre, ubicación, etc.).
Es tan importabte que SQL Server no puede iniciar sin Master, y puede crecer de manera indefinida, pero con un máximo de 2 TBytes.
Ubicación de Master
- Los datos principales se ubican en master.mdf, y el nombre lógico con el que se le conoce es master.
- El log se llama mastlog y se ubica físicamente en mastlog.ldf.
Consideraciones de uso de Master
- No se puede cambiar de archivos, Filegroups o de Intercalación (utiliza la del servidor).
- El propietario siempre es dbo.
- No se pueden añadir tablas, procedimientos o triggers.
- No se le puede hacer Drop.
- Siempre deberá estar respaldada (sobre todo cuando se añade, borr o mueve una base de datos del usuaio).
Base de datos Model
Es la plantilla con la que se crean las demás bases de datos (estructura y configuración por default). Si se modifica Model, cualquier nueva base de datos que se genere tendrá ese nuevo modelo. En términos prácticos, cada vez que se crea una nueva base de datos entonces se hace una copia de Model y se le da el nombre de la nueva base de datos.
Puede crecer de manera indefinida, hata un tamaño máximo de 2 TBytes.
Ubicación de Model
- Los datos principales se ubican en model.mdf, y el nombre lógico con el que se le conoce es modeldev.
- El log se llama modellog y se ubica físicamente en modellog.ldf
Consideraciones de uso de Model
- La intercalación (COLLATION) será la del servidor (Master).
- El propietario siempre es dbo.
- No se pueden añadir procedimientos o triggers encriptados (usando la cláusula WITH ENCRYPTION del comando DDL correspondiente).
- No se le puede hacer Drop a Model ya que no habría plantilla para crear las nuevas bases de datos del usuario.
- Siempre debe estar respaldada (sobre todo cuando se quiere replicar la instancia de SQL Server).
Base de datos Msdb
Es usada por el SQL Server Agent (Uno de los componentes de SQL Server) para programar sus tareas o alertas.
- Se ubica en el archivo MSDBData.mdf.
- El archivo del log se ubica en en MSDBLog.ldf.
- Al igual que las anteriores, no se le puede dar Drop, cambiar la intercalación, renombrarla.
Base de datos Tempdb
Es un base de datos temporal que se usa como recurso global al que todos tienen acceso y sirve para, entre otras actividades:
- Guardar recursos temporales (tablas, cursores, sps’s).
- Tablas para guardar resultados intermedios en una operación (cuando el motor de base de datos realiza operaciones parciales como segmentación, ordenamiento, agrupamientos, etc.).
- Versiones de registros dentro de un transacción.
Se guarda en tempdb.mdf y templog.ldf (datos y log respectivamente).
Como requiere buen rendimiento para acceso aleatorio, es relativamente pequeña y el perder datos es aceptable, se recomienda tenerlo en arreglos RAID 0, RAID1 o RAID10.
Consideraciones generales de Tempdb
- Cada vez que se inicia el motor se reinicia Tempdb
- Se recomienda tenerla con un Recovery Model SIMPLE (ya que se minimiza el Log).
- Se recomienda también configurar el Autogrow de 10% para archivos de 300MB, o más, iniciales (dependiendo de la carga normal de uso) o 15-25MB para archivos menores.
- Si es posible, deberá colocarse en discos veloces, de acceso muy eficiente ya que se ocupa mucho.
- De preferencia no debería compartir disco con bases de datos del usuario, y si lo hace, deberá compartir el disco con bases de datos que tengan poca actividad, ya que Tempbd tiene gran carga de trabajo.
- Para determinar el tamaño inicial es recomendable iniciar motor, hacer query’s, cargas y mantenimientos comunes y entonces determinar entonces el tamaño mínimo.
- Prácticamente no tiene Log.
Base de datos Resource
Ess una base de datos de sólo lectura que contiene todos los objetos del motor (sys.objects) que, aunque lógicamente aparecen en cada base de datos del usuario, residen físicamente en Resource.
Físicamente está en mssqlsytemresource.mdf y ldf (datos y log respectivamente).
Algunas tablas dentro de Resource son
- Sys.databases
- Sys.objects
- Sys.columns
- Sys.check_constraints