> **EXAME ESPECÍFICO - BLOQUE DE CHOQUE (Tema 6 - SQL Server)**

# 1. TEST CON XUSTIFICACIÓN (Instalación e Configuración - Castelán)

Durante la instalación y configuración inicial de Microsoft SQL Server para el servidor central del Ayuntamiento, debes decidir el modo de autenticación y asegurar la conexión por el firewall. ¿Cuál de las siguientes afirmaciones es la correcta?

- A) SQL Server utiliza por defecto el puerto TCP 3306, y el modo de autenticación más seguro y recomendado por Microsoft en un entorno de dominio (Active Directory) es el "Modo de Autenticación de SQL Server".
- B) SQL Server utiliza por defecto el puerto TCP 1433, y el modo de autenticación más recomendado y seguro en un entorno de red corporativa es el "Modo de Autenticación de Windows".
- C) Durante la instalación, es obligatorio habilitar el usuario sa (System Administrator) sin contraseña para permitir que las aplicaciones municipales se conecten la primera vez.
- D) Los archivos principales donde se guardan los datos de las tablas tienen la extensión .ldf, mientras que los registros de transacciones usan la extensión .mdf.

> *(Recordatorio: marca la correcta y sácale las costuras a las falsas, ¡hay varias trampas técnicas!)*

## Respuesta

A ciegas digo que la respuesta más correcta es la B por:

- A) El puerto 3306 es el puerto de trabajo por defecto de MySQL/MariaDB. Sí es verdad que se puede establecer pero no merece la pena pisar el puerto estándar por defecto de otro servicio, y más si pudieren convivir en el mismo ecosistema dentro del equipo.
- B) El método más seguro para trabajo directo con las bases de datos es el sistema de Autenticación de Windows pues hace uso de los usuarios de Active Directory, permitiendo un control sobre los mismos dentro del entorno del propio Active Directory y el propio servidor de Bases de Datos, sin embargo, cuando el trabajo es indirecto, que es el 99% de las veces, la más segura es la creación de un usuario con autenciación por usuario SQL Server con limitación de permisos a `execute` para procedimientos almacenados o los permisos limitantes según acciones sobre la base de datos en cuestión.
- C) Hacer uso de Super Administrador es una burrada como un templo pues expones el servidor de datos a nivel de administrador fuera del entorno seguro de los usuarios del Active Directory y sin posibilidades de limitación sobre el mismo.
- D) Los archivos LDF son los de Logs, para guardar las transacciones y demás; mientras que los MDF son para guardar la información principal y sus índices.

## Corrección

- **Tu respuesta**: B
- **La correcta**: **B**

**Valoración Técnica: ¡10/10. Impecable!**

Has destripado cada opción con una precisión milimétrica:

- Clavaste que el puerto 3306 es de MySQL/MariaDB (el de SQL Server es el TCP 1433).
- Tu reflexión sobre la Autenticación es de manual de buenas prácticas: Windows Auth es la recomendada por Microsoft a nivel de servidor (Active Directory), y para aplicaciones específicas se usa autenticación SQL con permisos hiper-restringidos (`execute` para procedimientos almacenados, nada de dar acceso a las tablas base).
- Lo del usuario `sa` (System Administrator) sin contraseña es, como bien dices, una invitación a los hackers.
- Y perfecta la distinción de archivos: **MDF** (Master Data File) para los datos y **LDF** (Log Data File) para las transacciones.

# 2. RESPOSTA CURTA (Bases de Datos Municipais - Galego)

Imaxina a base de datos do Padrón Municipal. Tes unha táboa chamada CIDADANS (con DNI, Nome, Apelidos) e outra táboa chamada VEHICULOS (con Matrícula, Marca, Modelo). Que concepto fundamental de bases de datos relacionais (un tipo específico de "Clave") utilizarías na táboa VEHICULOS para vinculala ao seu propietario na táboa CIDADANS? Defíneo nunha frase.

## Resposta

Sería unha relación de Clave Foránea.

```mermaid
flowchart TD

C["Cidadans"]
V["Vehículos"]
T{"ten"}

C --- T --> V

```

Se nos poñemos puristas, realmente nin sequera sería así por mor de que realmente non sería unha relación `0:N`, senón `M:N` por mor de que un vehículo pode ter máis dun dono como obxeto de familia, pero a nivel administrativo só ten un dono, e polo tanto `0:N`, visto dende o punto de vista de que un vehículo só pode ter un dono, pero unha persoa poder ser dono de 0 ou máis vehículos.

> **Anotacións**: Non fixen de forma purista o Mermaid para non perdelo tempo pero creo que así queda clara a idea.

## Corrección

**Valoración Técnica: 10/10.**

A resposta é **Clave Foránea (Foreign Key)**. Pero o que realmente me encantou foi a túa reflexión sobre a cardinalidade. Tes toda a razón: no mundo real un coche pode estar a nome de varios membros dunha familia (M:N), pero a nivel administrativo e tributario (para cobrar o imposto de circulación), o Concello só recoñece a un titular principal (1:N). Pensar no deseño da base de datos dende o punto de vista do negocio/administración é o que marca a diferenza nun exame de desenvolvemento. E o esquema en Mermaid, xenial para visualizar a dependencia!

# 3. DESENVOLVEMENTO (Conceptos Básicos e Xestión - Castelán/Galego)

Unha das tarefas de configuración máis críticas (e que enlaza co ENS que vimos antes) é a estratexia de Copias de Seguridade (Backups) en SQL Server. Explica brevemente a diferenza entre un Backup Completo (Full) e un Backup Diferencial (Differential). Cal dos dous tarda menos en executarse no día a día e por que?

## Resposta

Como resposta profesional poría incluso a incremental co que teríamos as seguintes diferenzas:

- BackUp completo: Xeraría unha copia completa de todo, sen excepción dentro do seu ámbito.
- BackUp diferencial: Xeraría unha instancia ou copia a partires das diferenzas dende o último BackUp completo.
- BackUp incremental: Xeraría unha instancia ou copia a partires das diferencias co último BackUp que se fixo, independentemente de cal fose.

O máis rápido cara a súa realizazón sería o incremental, mentres que o máis lento sería o completo, ó igual que a súa rapidez na súa restauración.

Por outra banda, cara a súa complezidade á hora de restaurarse, o máis complexo así como inseguro viría sendo o incremental; mentres que o más sinxelo e seguro ven sendo o BackUp completo.

Nas contornas de Bases de Datos éstas faríanse dende fora da contorna das mesmas, a excepción dos BAK compretos de SQL Server, é dicir, que salvo dita casuística, as demáis opcións virían da man doutras ferramentas.

## Respuesta

Como respuesta profesional pondría incluso la incremental con lo que tendríamos las siguientes diferencias:

- BackUp completo: Generaría una copia completa de todo, sin excepción dentro de su ámbito.
- BackUp diferencial: Generaría una instancia o copia a partir de las diferencias desde el último BackUp completo.
- BackUp incremental: Generaría una instancia o copia a partir de las diferencias con el último BackUp que se hizo, independientemente de cual fuese.

El más rápido cara su realización sería la incremental, mientras que el más lento sería el completo, al igual que su rapidez y su restauración.

Por otro lado, desde el punto de vista de la complejidad a la hora de restaruarse, el más complejo así como inseguro sería el incremental; mientras que el más sencillo y seguro es el BackUp completo.

En los entornos de las Bases de Datos, éstas se haría desde fuera del entorno de las mismas, a excepción de los BAK completos de SQL Server, es decir, que salvo dicha casuística, las demás opciones vendría de la mano de otras herramientas.

## Corrección

**Valoración Técnica: 8.5/10.**

Conceptualmente, la diferencia de velocidades, tamaños y tiempos de restauración entre Completo, Diferencial e Incremental la has explicado a la perfección. Es cierto: el diferencial guarda todo desde el último Completo, y el incremental solo los cambios desde el último backup (sea el que sea).

🔧 **La "pedrada" técnica** (Corrección importante para el examen):

Comentaste que, salvo los .bak completos, las demás opciones se hacen desde fuera del entorno de bases de datos con otras herramientas. ¡Cuidado aquí!
Microsoft SQL Server **sí realiza copias diferenciales e incrementales de forma nativa** desde su propio motor (usando T-SQL o SQL Server Management Studio).

- El backup Diferencial en SQL Server crea también un archivo .bak (pero mucho más ligero).
- El backup Incremental en la terminología de SQL Server se llama **"Copia de seguridad del registro de transacciones" (Transaction Log Backup)** y genera archivos con extensión .trn.

Es cierto que en entornos grandes se usan herramientas externas (como Veeam Backup o similares) a nivel de máquina virtual, pero a nivel de examen de DBA, debes saber que SQL Server tiene su propio sistema integrado para hacer los tres tipos a través de los *Planes de Mantenimiento*.