Script de Información a Nivel de Base de Datos en SQL Server
Script de Información a Nivel de Base de Datos en SQL Server, en la administración de SQL Server, es tan importante obtener información a nivel de base de datos como lo es a nivel de servidor. Mientras que la supervisión del rendimiento y la salud del servidor es crucial, conocer el estado y la configuración de cada base de datos individual es fundamental para garantizar que el sistema funcione de manera óptima y segura. Un aspecto clave de esta supervisión es entender el nivel de compatibilidad, el modelo de recuperación y el estado de cada base de datos en el sistema.
¿Por qué es importante conocer la información a nivel de base de datos?
Obtener información detallada sobre cada base de datos te permite:
- Verificar la compatibilidad de la base de datos: Cuando se actualiza SQL Server de una versión anterior a una más reciente, es posible que el nivel de compatibilidad de la base de datos no se actualice automáticamente al nivel deseado. Este nivel de compatibilidad afecta cómo se ejecutan las consultas y las características disponibles en la base de datos, por lo que es esencial asegurarse de que esté alineado con la versión del servidor SQL en uso.
- Determinar el modelo de recuperación: El modelo de recuperación de una base de datos define cómo SQL Server gestiona las transacciones y cómo se pueden realizar las copias de seguridad y restauraciones. Conocer el modelo de recuperación (completo, simple o bulk-logged) es crucial para planificar adecuadamente la estrategia de backup y recuperación, especialmente en caso de desastres.
- Monitorear el estado de la base de datos: Saber si una base de datos está en línea o fuera de línea es esencial para la administración diaria. Una base de datos fuera de línea puede afectar la disponibilidad de aplicaciones y servicios, por lo que el monitoreo regular de su estado es necesario para garantizar la continuidad del negocio.

Utilizando T-SQL para obtener información crítica de la base de datos
El siguiente script T-SQL proporciona una lista completa de los nombres de las bases de datos en el servidor, su nivel de compatibilidad, el modelo de recuperación y el estado actual de la base de datos. Esta información es vital para cualquier DBA que necesite asegurarse de que todas las bases de datos estén configuradas correctamente y operando en un estado óptimo.
sql:
SELECT name, compatibility_level, recovery_model_desc, state_desc
FROM sys.databases;
¿Qué información proporciona este script?
Al ejecutar este script, obtendrás una tabla con los siguientes datos:
- name: El nombre de la base de datos.
- compatibility_level: El nivel de compatibilidad de la base de datos, que puede estar entre 80 (SQL Server 2000) y 150 (SQL Server 2019), dependiendo de la versión de SQL Server.
- recovery_model_desc: La descripción del modelo de recuperación de la base de datos, que puede ser «FULL» (completo), «SIMPLE» (simple) o «BULK_LOGGED» (con registro masivo).
- state_desc: El estado actual de la base de datos, que indica si está «ONLINE» (en línea), «OFFLINE» (fuera de línea), «RESTORING» (en proceso de restauración), entre otros estados posibles.
Aplicaciones prácticas del script T-SQL
Este script es extremadamente útil en varias situaciones de administración de bases de datos:
- Actualización de versiones: Después de actualizar SQL Server a una versión más reciente, este script te permitirá verificar si todas las bases de datos tienen el nivel de compatibilidad adecuado y realizar las actualizaciones necesarias.
- Revisión de la estrategia de backup: Al listar el modelo de recuperación de cada base de datos, puedes revisar y ajustar tu estrategia de copias de seguridad para asegurarte de que está alineada con los requisitos de recuperación de tu organización.
- Monitoreo del estado de la base de datos: Conocer el estado de cada base de datos te permite identificar rápidamente cualquier problema de disponibilidad y tomar medidas proactivas para resolverlos.
Conclusión
La obtención de información a nivel de base de datos es una parte esencial de la administración efectiva de SQL Server. El script T-SQL presentado proporciona una visión clara y concisa del estado y la configuración de cada base de datos en el servidor, lo que te permite asegurarte de que están configuradas correctamente y operando como se espera. Implementar este tipo de monitoreo en tu rutina diaria te ayudará a mantener un entorno de base de datos seguro, eficiente y confiable.
¿Qué son las vistas SQL Server? Una Guía Completa
Qué es un Query Store en SQL Server
Cómo Obtener el tamaño de los archivos de Datos en SQL Server
Tamaño de los archivos de Datos en SQL Server, en la gestión de bases de datos SQL Server, es crucial para los DBAs conocer el tamaño y la ubicación de los archivos de datos de las bases de datos. Tener esta información no solo ayuda en la planificación del almacenamiento, sino que también facilita tareas de mantenimiento y mejora el rendimiento general de la base de datos. A continuación, te explico cómo un sencillo script SQL puede proporcionarte toda la información que necesitas sobre los archivos de datos en una base de datos específica.
¿Por qué es importante conocer el tamaño de los archivos de datos?
Los archivos de datos en SQL Server son fundamentales para el funcionamiento de la base de datos. Conocer su tamaño y ubicación te permite:
- Planificar y gestionar el almacenamiento de manera eficiente: Al entender cuánto espacio ocupan los archivos de datos, puedes asegurarte de que tienes suficiente capacidad en tu sistema de almacenamiento.
- Optimizar el rendimiento: Evitarás problemas de rendimiento asociados con el crecimiento descontrolado de los archivos.
- Facilitar la recuperación ante desastres: Sabrás exactamente qué archivos necesitas respaldar y restaurar en caso de una falla.
Desglose del Script SQL
El siguiente script SQL te proporcionará información detallada sobre los archivos de datos de una base de datos específica, excluyendo los archivos de log:
SELECT
name AS LogicalFileName,
physical_name AS PhysicalFileName,
size * 8 / 1024 AS SizeMB,
CASE type_desc
WHEN 'ROWS' THEN 'Data File (.mdf or .ndf)'
WHEN 'LOG' THEN 'Log File (.ldf)'
END AS FileType
FROM
sys.master_files
WHERE
type_desc = 'ROWS' -- Solo archivos de datos, excluye los logs
AND database_id = DB_ID('Nombre_De_Tu_Base_De_Datos'); -- Asegúrate de que el nombre de la base de datos sea correcto
Este script es sencillo pero poderoso. Extrae información relevante de la vista del sistema sys.master_files
, que contiene detalles sobre todos los archivos asociados con las bases de datos en el servidor SQL.

¿Qué información proporciona el script?
Al ejecutar el script, obtendrás una tabla con los siguientes datos:
- LogicalFileName: El nombre lógico del archivo tal como lo reconoce SQL Server. Este es el nombre que usarás en tus consultas y scripts.
- PhysicalFileName: La ruta completa y el nombre del archivo en el sistema operativo. Esta información es esencial para identificar la ubicación física de los datos.
- SizeMB: El tamaño del archivo en megabytes. Este dato es calculado multiplicando el tamaño del archivo en páginas de 8 KB por 8, y luego dividiéndolo por 1024 para convertirlo a MB.
- FileType: El tipo de archivo, que te indica si se trata de un archivo de datos (
mdf
ondf
) o de log. En este caso, el script está configurado para mostrar solo archivos de datos.
¿Cómo aplicar este script en tu día a día?
Este script es una herramienta versátil que puedes usar en diversas situaciones:
- Antes de realizar una migración de base de datos: Verifica el tamaño y la ubicación de los archivos de datos para planificar la migración de manera efectiva.
- Para la gestión de almacenamiento: Evalúa el espacio que ocupan tus archivos de datos y ajusta la configuración de autogrowth si es necesario para prevenir el crecimiento descontrolado.
- Durante auditorías de seguridad: Mantén un registro preciso de los archivos de datos para garantizar que se cumplan las políticas de seguridad y recuperación.
Consideraciones finales
Conocer el tamaño y la ubicación de los archivos de datos en SQL Server es una de las mejores prácticas en la administración de bases de datos. Este script es una herramienta esencial que te permite obtener esta información de manera rápida y precisa. Implementarlo en tu rutina diaria te ayudará a mantener un entorno de base de datos organizado, seguro y optimizado para el rendimiento.
Asegúrate de adaptar el script a la base de datos que estás utilizando cambiando el nombre de la base de datos en la línea DB_ID('Nombre_De_Tu_Base_De_Datos')
para que coincida con la base de datos que deseas analizar.
La Seguridad en SQL Server: Identificar Roles de Administrador a Nivel de Servidor
Extracción de las Vistas en SQL Server
Generando Script de creación de Usuarios en SQL Server
Monitorización del Espacio Utilizado en Tablas SQL: Un Script Esencial para DBAs
Monitorización del Espacio Utilizado en Tablas SQL: Un Script Esencial para DBAs
Monitorización del Espacio Utilizado en Tablas SQL, en la administración de bases de datos, uno de los aspectos más críticos es la gestión eficiente del espacio de almacenamiento. El script SQL que exploraremos en este blog es una herramienta poderosa para los DBAs, permitiendo obtener una visión detallada del uso del espacio en las tablas de una base de datos. Este script no solo proporciona información sobre el espacio reservado y utilizado, sino que también desglosa estos datos en componentes clave como el tamaño de los índices y el espacio no utilizado. Vamos a desglosar su estructura, funcionamiento y la importancia de cada componente.
sql:
SELECT a3.name + '.' + a2.name AS [name],
a1.rows AS [rows],
(a1.reserved + ISNULL(a4.reserved, 0)) * 8 AS [Reserved KB],
a1.data * 8 AS [Data KB],
(CASE
WHEN(a1.used + ISNULL(a4.used, 0)) > a1.data
THEN(a1.used + ISNULL(a4.used, 0)) - a1.data
ELSE 0
END) * 8 AS [Index_size KB],
(CASE
WHEN(a1.reserved + ISNULL(a4.reserved, 0)) > a1.used
THEN(a1.reserved + ISNULL(a4.reserved, 0)) - a1.used
ELSE 0
END) * 8 AS [unused KB],
CONVERT(DECIMAL(18, 2), (((a1.reserved + ISNULL(a4.reserved, 0)) * 8) - ((CASE
WHEN(a1.reserved + ISNULL(a4.reserved, 0)) > a1.used
THEN(a1.reserved + ISNULL(a4.reserved, 0)) - a1.used
ELSE 0
END) * 8)) / 1024.0 / 1024.0) AS [Table_used_Space GB]
FROM
(
SELECT ps.object_id,
SUM(CASE
WHEN(ps.index_id < 2)
THEN row_count
ELSE 0
END) AS [rows],
SUM(ps.reserved_page_count) AS reserved,
SUM(CASE
WHEN(ps.index_id < 2)
THEN(ps.in_row_data_page_count + ps.lob_used_page_count + ps.row_overflow_used_page_count)
ELSE(ps.lob_used_page_count + ps.row_overflow_used_page_count)
END) AS data,
SUM(ps.used_page_count) AS used
FROM sys.dm_db_partition_stats ps
GROUP BY ps.object_id
) AS a1
LEFT OUTER JOIN
(
SELECT it.parent_id,
SUM(ps.reserved_page_count) AS reserved,
SUM(ps.used_page_count) AS used
FROM sys.dm_db_partition_stats ps
INNER JOIN sys.internal_tables it ON(it.object_id = ps.object_id)
WHERE it.internal_type IN(202, 204)
GROUP BY it.parent_id
) AS a4 ON(a4.parent_id = a1.object_id)
INNER JOIN sys.all_objects a2 ON(a1.object_id = a2.object_id)
INNER JOIN sys.schemas a3 ON(a2.schema_id = a3.schema_id)
WHERE a2.type != N'S'
AND a2.type != N'IT'
ORDER BY [Table_used_Space GB] DESC, [rows] desc ;

1. Descripción del Script y su Funcionalidad
El script en cuestión realiza una consulta a las vistas de sistema de SQL Server para obtener información detallada sobre el uso del espacio en las tablas de la base de datos. La consulta principal utiliza las vistas sys.dm_db_partition_stats
, sys.all_objects
y sys.schemas
para recoger datos esenciales como:
- Nombre completo de la tabla: Incluyendo el esquema.
- Número de filas: Contando las filas presentes en cada tabla.
- Espacio reservado: Cantidad de espacio reservado para cada tabla, en KB.
- Espacio utilizado para datos: Espacio real utilizado por los datos.
- Tamaño de los índices: Espacio ocupado por los índices de las tablas.
- Espacio no utilizado: Espacio reservado pero no utilizado.
- Espacio total utilizado por la tabla en GB: Una conversión del espacio total reservado menos el espacio no utilizado.
2. Importancia del Script para un DBA
Este script es una herramienta indispensable para cualquier DBA por varias razones:
- Optimización del Almacenamiento: Permite identificar tablas que están utilizando más espacio del necesario. Esto es crucial en entornos donde el almacenamiento es costoso o limitado.
- Monitoreo de Crecimiento de Tablas: Ayuda a monitorear el crecimiento de las tablas a lo largo del tiempo, permitiendo prever cuándo será necesario realizar tareas de mantenimiento, como la reorganización de índices o la limpieza de datos no utilizados.
- Identificación de Ineficiencias: Al separar el espacio ocupado por índices del espacio ocupado por datos, los DBAs pueden identificar si ciertos índices están consumiendo más espacio de lo que deberían, lo que puede indicar la necesidad de reevaluar la estrategia de indexación.
- Mantenimiento Proactivo: El script facilita la identificación de tablas con grandes cantidades de espacio no utilizado, lo que puede ser un signo de ineficiencias que necesitan ser abordadas a través de la reorganización de tablas o la actualización de estadísticas.
3. Desglose de la Consulta SQL
Selección y Agregación de Datos
La consulta comienza con dos subconsultas que agregan datos a nivel de particiones y tablas internas:
- Primera Subconsulta: Se agrupan los datos por
object_id
para obtener el número de filas, el espacio reservado y utilizado, y el espacio ocupado por los datos en las tablas. - Segunda Subconsulta: Se enfoca en tablas internas específicas, identificando el espacio reservado y utilizado por ellas.
Combinación y Filtrado de Resultados
Los resultados de estas subconsultas se combinan usando una unión externa (LEFT JOIN) y se integran con las tablas de objetos (sys.all_objects
) y esquemas (sys.schemas
) para obtener los nombres de las tablas completos.
Cálculos de Espacio
El script realiza cálculos clave, incluyendo:
- Espacio Total Reservado en KB: Considera tanto el espacio reservado por la tabla como por las estructuras internas asociadas.
- Tamaño de los Índices: Calculado como la diferencia entre el espacio total utilizado y el espacio utilizado por los datos.
- Espacio No Utilizado: Calculado como la diferencia entre el espacio reservado y el espacio utilizado.
Ordenamiento de los Resultados
Finalmente, los resultados se ordenan por el espacio total utilizado en GB, seguido por el número de filas, lo que permite identificar rápidamente las tablas que están utilizando más espacio.
4. Conclusión
El uso eficiente del almacenamiento es un componente clave de la administración de bases de datos. El script SQL presentado aquí es una herramienta poderosa que permite a los DBAs obtener una visión completa del uso del espacio en sus bases de datos. Al proporcionar detalles granulares sobre cómo se utiliza el espacio en cada tabla, los DBAs pueden tomar decisiones informadas para optimizar el rendimiento y la eficiencia de la base de datos.
Conociendo las Trazas Habilitadas en SQL Server: Guía DBAs
SQL login failed for user ‘NT AUTHORITY \ ANONYMOUS LOGIN’
Conociendo las Trazas Habilitadas en SQL Server: Guía DBAs
Trazas Habilitadas en SQL Server, como Administrador de Bases de Datos (DBA), es fundamental conocer todos los aspectos que influyen en el comportamiento de tu servidor SQL. Uno de esos aspectos clave son las trazas habilitadas. Las trazas en SQL Server son configuraciones que alteran o mejoran el comportamiento del servidor para tareas específicas, como el diagnóstico o la depuración. En este blog, te mostraré cómo identificar todas las trazas que están activas en tu servidor SQL, utilizando comandos T-SQL.
¿Qué son las Trazas en SQL Server?
Las trazas en SQL Server, comúnmente conocidas como «trace flags», son configuraciones que permiten al DBA modificar temporalmente el comportamiento del servidor. Estas trazas son útiles para diagnosticar problemas, optimizar el rendimiento o cambiar la forma en que ciertas operaciones son manejadas por el motor de SQL Server.
Las trazas pueden estar habilitadas de manera global (afectando a todo el servidor) o solo para una sesión específica. Saber qué trazas están activas es crucial para entender el estado de tu servidor y evitar problemas inesperados.

¿Cómo Listar las Trazas Habilitadas en SQL Server?
Para conocer qué trace flags están habilitadas globalmente en tu servidor SQL, puedes utilizar el siguiente comando T-SQL:
DBCC TRACESTATUS(-1);
Desglose del Comando
- DBCC TRACESTATUS(-1): Este comando devuelve el estado de todas las trace flags que están habilitadas globalmente en el servidor. El parámetro
-1
indica que quieres revisar todas las trazas activas a nivel global.
¿Qué Información Proporciona?
Al ejecutar este comando, obtendrás una lista que incluye:
- TraceFlag: El número de la traza que está habilitada.
- Status: Indica si la traza está habilitada o deshabilitada.
- Global: Un valor que indica si la traza está habilitada globalmente en el servidor.
- Session: Un valor que indica si la traza está habilitada solo para la sesión actual.
Esta información es invaluable para cualquier DBA que necesite un control detallado sobre las configuraciones y optimizaciones aplicadas al servidor.
Cómo Listar las Trazas Habilitadas en la Conexión Actual
Además de conocer las trazas habilitadas globalmente, es posible que necesites saber cuáles están activas en tu conexión actual. Para ello, puedes utilizar el siguiente comando:
DBCC TRACESTATUS;
Desglose del Comando
- DBCC TRACESTATUS: A diferencia del comando anterior, este no incluye un parámetro específico. Esto significa que devolverá el estado de las trace flags que están habilitadas en la conexión actual que estás utilizando para ejecutar el comando.
¿Qué Información Proporciona?
El resultado te mostrará las trace flags activas solo en tu sesión actual. Esta información es útil para entender cómo tu conexión específica puede estar siendo influenciada por determinadas configuraciones temporales.
Buenas Prácticas en la Gestión de Trace Flags
El uso de trace flags es una herramienta poderosa, pero debe ser manejada con cuidado. Aquí algunas buenas prácticas para los DBAs:
- Documenta Todas las Trazas Activas: Mantén un registro detallado de las trace flags que habilitas, junto con la razón y el impacto esperado. Esto te ayudará a recordar por qué se aplicaron ciertas configuraciones y a revertir cambios si es necesario.
- Evalúa el Impacto Antes de Habilitar Trazas: Algunas trace flags pueden alterar significativamente el comportamiento del servidor. Asegúrate de probarlas en un entorno de desarrollo o prueba antes de aplicarlas en producción.
- Monitorea el Rendimiento: Después de habilitar una traza, monitorea el rendimiento del servidor para asegurarte de que no está causando problemas inesperados.
- Revisa Regularmente las Trazas Activas: Las necesidades de tu servidor pueden cambiar con el tiempo. Es una buena práctica revisar periódicamente las trace flags activas para asegurarte de que aún son necesarias.
Conclusión
La gestión adecuada de las trace flags es esencial para mantener un entorno SQL Server optimizado y seguro. Como DBA, es tu responsabilidad conocer qué trazas están habilitadas, tanto a nivel global como en sesiones específicas, y entender su impacto en el servidor. Utilizando los comandos DBCC TRACESTATUS(-1)
y DBCC TRACESTATUS
, puedes obtener una visión clara de estas configuraciones y tomar decisiones informadas para gestionar tu entorno SQL.
No subestimes el poder de las trace flags, pero manéjalas con cuidado y siempre con una comprensión clara de lo que están haciendo en tu servidor. ¡Mantente al tanto de nuestras futuras publicaciones para más consejos y trucos sobre la administración de SQL Server!
Convertir una Fecha y Hora a Solo Fecha en SQL
La Seguridad en SQL Server: Identificar Roles de Administrador a Nivel de Servidor
Procedimientos Almacenados Temporales en SQL Server
Error 15025 SQL Server. The server principal already exists
Sacar permisos de Base de Datos SQL scripts
La Seguridad en SQL Server: Identificar Roles de Administrador a Nivel de Servidor
La Seguridad en SQL Server es uno de los aspectos más críticos que un Administrador de Bases de Datos (DBA) debe dominar. Mantener un entorno seguro no solo protege los datos sensibles, sino que también garantiza la integridad y disponibilidad del sistema. Una de las tareas esenciales de un DBA es conocer qué cuentas de inicio de sesión (login) tienen asignados los roles de administrador del sistema (sysadmin) o administrador de seguridad (security admin) a nivel de servidor. En este blog, te mostraré cómo identificar estos roles utilizando una simple consulta SQL.
La Seguridad en SQL Server, conocer los Roles de Seguridad
En un entorno de SQL Server, los roles de servidor determinan qué tipo de acceso y privilegios tiene un usuario sobre el servidor. Dos de los roles más poderosos son:
- Sysadmin: Este rol otorga control total sobre el servidor SQL. Un usuario con este rol puede realizar cualquier tarea, incluyendo la administración de bases de datos, seguridad, y configuración del servidor.
- Securityadmin: Este rol permite a un usuario gestionar la seguridad del servidor. Un usuario con este rol puede crear y gestionar cuentas de inicio de sesión, asignar permisos, y cambiar contraseñas.
Conocer quién tiene estos roles es fundamental para mantener la seguridad y el control sobre el entorno de SQL Server. Una mala gestión de estos roles podría llevar a accesos no autorizados, lo que comprometería la seguridad de la base de datos.
¿Cómo Identificar Usuarios con Roles de Sysadmin o Security Admin?
Para identificar qué cuentas de inicio de sesión tienen asignados los roles de sysadmin o securityadmin, puedes utilizar la siguiente consulta SQL:
SELECT l.name, l.denylogin, l.isntname, l.isntgroup, l.isntuser
FROM master.dbo.syslogins l
WHERE l.sysadmin = 1 OR l.securityadmin = 1;

Desglose de la Consulta
Esta consulta accede a la tabla syslogins
en la base de datos master
, la cual contiene información sobre todas las cuentas de inicio de sesión configuradas en el servidor SQL. Aquí te explico lo que hace cada parte de la consulta:
- SELECT l.name, l.denylogin, l.isntname, l.isntgroup, l.isntuser: Este comando selecciona varias columnas de la tabla
syslogins
.l.name
: Muestra el nombre de la cuenta de inicio de sesión.l.denylogin
: Indica si el inicio de sesión está denegado.l.isntname
,l.isntgroup
,l.isntuser
: Estos campos muestran si el inicio de sesión es una cuenta de Windows NT, un grupo de Windows NT, o un usuario de Windows NT, respectivamente.
- FROM master.dbo.syslogins l: Especifica la tabla
syslogins
en la base de datosmaster
como la fuente de datos. - WHERE l.sysadmin = 1 OR l.securityadmin = 1: Este filtro asegura que solo se muestren las cuentas de inicio de sesión que tienen asignado el rol de sysadmin o securityadmin.
¿Qué Información Proporciona la Consulta?
Al ejecutar esta consulta, obtendrás una lista de todos los usuarios que tienen un control significativo sobre el servidor SQL, ya sea total (sysadmin) o sobre aspectos de seguridad (securityadmin). Esta información es crucial para auditar quién tiene privilegios elevados y garantizar que solo los usuarios adecuados tienen acceso a estas funciones críticas.
Buenas Prácticas de Seguridad
Identificar estos roles es solo el primer paso. Aquí te dejo algunas buenas prácticas para gestionar la seguridad en SQL Server:
- Auditorías Regulares: Realiza auditorías periódicas para revisar qué usuarios tienen asignados roles críticos. Esto ayuda a detectar y corregir posibles problemas de seguridad.
- Principio de Menor Privilegio: Asegúrate de que cada usuario tenga solo los permisos necesarios para realizar su trabajo. Evita otorgar roles como sysadmin o securityadmin a menos que sea absolutamente necesario.
- Revisión de Cuentas Inactivas: Elimina o desactiva cuentas que ya no se utilizan para reducir el riesgo de acceso no autorizado.
- Monitoreo Continuo: Utiliza herramientas de monitoreo para rastrear cualquier cambio en los permisos o en la configuración de seguridad.
Conclusión
La seguridad en SQL Server es un aspecto esencial que no se debe tomar a la ligera. Identificar qué cuentas de inicio de sesión tienen los roles de sysadmin o securityadmin te permite mantener un control adecuado sobre tu servidor y prevenir accesos no autorizados. Con la consulta SQL que te mostré, puedes obtener esta información de manera rápida y eficiente, asegurando así que solo los usuarios correctos tengan acceso a las funciones críticas del servidor.
Cuentos de miedo para influencers
Para que una tabla tenga FULLTEXT SQL
Guía Completa para Implementar FULLTEXT en SQL
Dependencia de Usuarios en SQL: Guía Completa
Conociendo la Configuración a Nivel de Servidor en SQL Server
Como administradores de bases de datos (DBA), una de nuestras responsabilidades clave es comprender y manejar la configuración a nivel de servidor de SQL Server. Estas configuraciones no solo controlan varias características del servidor, sino que también pueden influir significativamente en su rendimiento y seguridad. En esta entrada, exploraremos cómo obtener toda la información relacionada con la configuración del servidor utilizando una simple consulta SQL.
¿Por Qué Es Importante la Configuración a Nivel de Servidor?
La configuración a nivel de servidor define cómo se comporta SQL Server en su totalidad, afectando aspectos como la memoria, la seguridad, la ejecución de consultas y más. Conocer estos parámetros permite a los DBAs ajustar el servidor para optimizar el rendimiento, asegurar la integridad de los datos y cumplir con los requisitos de seguridad.
Recuperando Información de Configuración del Servidor
Para obtener un listado completo de las configuraciones del servidor, puedes ejecutar la siguiente consulta T-SQL:
SELECT * FROM sys.configurations ORDER BY name;

¿Qué Hace Esta Consulta?
La consulta selecciona todas las filas de la vista del sistema sys.configurations
, que contiene información detallada sobre cada configuración del servidor. Al ordenar los resultados por el nombre de la configuración (ORDER BY name
), se facilita la búsqueda y análisis de parámetros específicos.
Desglose de la Vista sys.configurations
La vista sys.configurations
proporciona una variedad de columnas que contienen información valiosa sobre cada configuración. Aquí se describen algunas de las columnas más importantes:
- Name: El nombre de la opción de configuración.
- Value: El valor actual de la configuración.
- Minimum y Maximum: Los valores mínimo y máximo permitidos para la configuración.
- Description: Una descripción breve de lo que hace la configuración.
- Is_dynamic: Indica si la configuración puede cambiarse sin reiniciar el servidor.
- Is_advanced: Señala si es una opción avanzada.
Ejemplo de Uso Práctico
Supongamos que necesitas verificar las configuraciones relacionadas con la memoria. Al ejecutar la consulta, puedes buscar parámetros como ‘max server memory’ o ‘min server memory’ en los resultados ordenados, permitiéndote ajustar estos valores para optimizar el uso de memoria del servidor.
Ajustando Configuraciones del Servidor
Una vez que has identificado las configuraciones que necesitan ajustes, puedes modificarlas usando el comando sp_configure
. Aquí tienes un ejemplo de cómo cambiar la configuración de memoria máxima del servidor:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory', 4096;
RECONFIGURE;
Explicación del Ejemplo
- Habilitar Opciones Avanzadas:sqlCopiar código
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
Esto permite cambiar configuraciones avanzadas que no están disponibles por defecto. - Modificar la Configuración:sqlCopiar código
EXEC sp_configure 'max server memory', 4096; RECONFIGURE;
Aquí estamos configurando la memoria máxima del servidor a 4096 MB. Después de ejecutar el comandosp_configure
, usamosRECONFIGURE
para aplicar el cambio.
Importancia de Documentar y Monitorear
Es crucial documentar cualquier cambio en la configuración del servidor para futuras referencias y auditorías. Además, monitorear regularmente estas configuraciones ayuda a identificar problemas potenciales y mantener el servidor funcionando de manera óptima.
Herramientas de Monitoreo
SQL Server ofrece varias herramientas y vistas dinámicas de gestión (DMV) para monitorear el estado y el rendimiento del servidor. Utilizar estas herramientas junto con sys.configurations
puede proporcionar una visión completa del entorno de tu SQL Server.
Conclusión
Comprender y gestionar la configuración a nivel de servidor en SQL Server es esencial para cualquier DBA. La consulta SELECT * FROM sys.configurations ORDER BY name
te proporciona una vista completa de todos los parámetros configurables, permitiéndote ajustar y optimizar el servidor según las necesidades de tu entorno.
Descarga de SQL Server Management Studio (SSMS)
¿Qué son las vistas SQL Server? Una Guía Completa
Información del Servidor SQL Server con T-SQL
Información del Servidor SQL Server, en la administración de bases de datos SQL Server, es fundamental conocer los detalles del entorno en el que estás trabajando. Esto incluye información sobre el nombre del host, la instancia actual, la edición, el tipo de servidor, el nivel del producto y el número de versión. En este blog, te mostraré cómo usar una simple consulta T-SQL para obtener toda esta información de una conexión actual a SQL Server.
¿Qué Información Puedes Obtener del Servidor SQL Server?
La consulta T-SQL que presentaremos recupera los siguientes datos clave del servidor SQL actual:
- Hostname: El nombre de la máquina que hospeda el servidor SQL.
- Instance Name: El nombre de la instancia SQL Server.
- Edition: Indica si la arquitectura es de 32 bits o 64 bits.
- Product Level: Muestra el nivel del producto, como RTM o el Service Pack.
- Server Type: Indica si el servidor SQL es un servidor agrupado (clustered) o independiente (standalone).
- Version Number: El número de versión del servidor SQL.
La Consulta T-SQL
A continuación, te presento la consulta T-SQL que puedes ejecutar para obtener esta valiosa información:
SELECT
SERVERPROPERTY('MachineName') as Host,
SERVERPROPERTY('InstanceName') as Instance,
SERVERPROPERTY('Edition') as Edition, /* muestra 32 bits o 64 bits */
SERVERPROPERTY('ProductLevel') as ProductLevel, /* RTM o SP1, etc. */
CASE SERVERPROPERTY('IsClustered') WHEN 1 THEN 'CLUSTERED' ELSE 'STANDALONE' END as ServerType,
@@VERSION as VersionNumber

Desglose de la Consulta
- Hostname y Instance Name:sqlCopiar código
SERVERPROPERTY('MachineName') as Host, SERVERPROPERTY('InstanceName') as Instance,
Estas propiedades devuelven el nombre del host y de la instancia de SQL Server actual. - Edition:sqlCopiar código
SERVERPROPERTY('Edition') as Edition,
La propiedad ‘Edition’ te muestra si el servidor es de 32 bits o 64 bits, además de otros detalles sobre la edición de SQL Server. - Product Level:sqlCopiar código
SERVERPROPERTY('ProductLevel') as ProductLevel,
La propiedad ‘ProductLevel’ indica el nivel del producto, como la versión RTM (Release to Manufacturing) o un Service Pack específico. - Server Type:sqlCopiar código
CASE SERVERPROPERTY('IsClustered') WHEN 1 THEN 'CLUSTERED' ELSE 'STANDALONE' END as ServerType,
Este caso condicional verifica si el servidor SQL es parte de un clúster. Si ‘IsClustered’ devuelve 1, el servidor es agrupado; de lo contrario, es independiente. - Version Number:sqlCopiar código
@@VERSION as VersionNumber
Finalmente, @@VERSION devuelve la versión completa de SQL Server, incluyendo el número de versión, la fecha de compilación y la arquitectura del sistema operativo.
Ejecución de la Consulta
Para ejecutar esta consulta, simplemente abre SQL Server Management Studio (SSMS), conecta a tu servidor SQL y pega la consulta en una nueva ventana de consulta. Al ejecutar la consulta, recibirás un conjunto de resultados con toda la información detallada.
Conclusión
Conocer los detalles de tu entorno SQL Server es esencial para la administración y el mantenimiento eficientes de tus bases de datos. Esta sencilla consulta T-SQL te proporciona una visión rápida y completa de los aspectos clave de tu servidor SQL, ayudándote a tomar decisiones informadas y a resolver problemas de manera más efectiva.
Script para saber el histórico de queries ejecutados SQL
Qué es un Query Store en SQL Server
Query Store en SQL Server, para empezar, quiero destacar una de mis características favoritas de los últimos tiempos: el Query Store en SQL Server. Esta herramienta nació con el objetivo de facilitar el monitoreo y la solución de problemas en nuestras consultas y ha evolucionado significativamente en las últimas versiones. Veamos en detalle qué es Query Store en SQL Server.
Introducción al Query Store
Query Store se introdujo en SQL Server 2016 para implementaciones on-premise y ha sido fundamental en Azure desde 2015, contribuyendo a muchas mejoras en el motor de base de datos. Este almacén recopila automáticamente las consultas, planes de ejecución y estadísticas de tiempo de ejecución para su análisis. Una de sus grandes ventajas es permitirnos ver si un plan de ejecución ha cambiado con el tiempo.
Datos proporcionados por Query Store
Una vez activado, Query Store comienza a capturar información sobre tus consultas, permitiéndote ver datos estadísticos que identifican las consultas más pesadas, aquellas con cambios en su comportamiento, las que más recursos consumen, y otra información relevante.
Por ejemplo, en el reporte «Top Resource Consuming Queries», puedes ver una gráfica con el historial de las consultas con mayor tiempo de ejecución. Al colocar el cursor sobre las barras, obtienes detalles sobre su duración en milisegundos o la cantidad de veces que se han ejecutado. Además, puedes ver los cambios en los planes de ejecución a lo largo del tiempo y el plan de ejecución específico correspondiente a la consulta seleccionada.
Análisis de cambios en los planes de ejecución
El plan de ejecución de una consulta puede variar debido a cambios en las estadísticas de los datos o modificaciones en las estructuras como los índices. Query Store permite monitorear estos cambios y evaluar su impacto. Por ejemplo, al analizar una consulta específica, puedes ver que inicialmente se ejecuta mediante un Clustered Index Scan y, posteriormente, a través de un NonClustered Index Seek con un Key Lookup, lo que reduce el esfuerzo de ejecución.
Beneficios del uso de Query Store
Query Store es una herramienta esencial para observar cómo se comporta una consulta en diferentes escenarios y a lo largo del tiempo. Te permite identificar y solucionar problemas de rendimiento de manera más eficaz, optimizando así el funcionamiento de tus bases de datos.
Consideraciones adicionales
Es recomendable utilizar siempre la versión más reciente de SQL Server Management Studio para aprovechar todas las funcionalidades de Query Store. No existe una configuración estándar para todos los casos; debes evaluar tu flujo de trabajo para crear una línea base adecuada a tus necesidades.
Activación y Configuración de Query Store en SQL Server

Activar Query Store en SQL Server es un proceso sencillo, pero es importante asegurarse de que esté configurado correctamente para maximizar sus beneficios. A continuación, se describen los pasos para activar y configurar Query Store en una base de datos on-premise:
- Acceder a las Propiedades de la Base de Datos:
- Abre SQL Server Management Studio (SSMS).
- Haz clic derecho en la base de datos en la que deseas activar Query Store.
- Selecciona «Propiedades».
- Configuración de Query Store:
- En el cuadro de diálogo de propiedades de la base de datos, selecciona la página «Query Store».
- Configura los parámetros según tus necesidades. Algunas configuraciones clave incluyen:
- Operation Mode (Modo de Operación): Selecciona «Read Write» para permitir la captura de datos.
- Data Flush Interval (Intervalo de Vaciado de Datos): Configura la frecuencia con la que los datos se escriben en disco.
- Statistics Collection Interval (Intervalo de Recopilación de Estadísticas): Determina la frecuencia de recopilación de estadísticas.
- Max Size (Tamaño Máximo): Establece el tamaño máximo de almacenamiento para Query Store.
Monitoreo y Análisis con Query Store
Una vez que Query Store está activado y configurado, puedes comenzar a monitorear y analizar el rendimiento de las consultas. Aquí se presentan algunas de las principales capacidades de análisis que ofrece Query Store:
- Identificación de Consultas con Alto Consumo de Recursos:
- Utiliza los reportes integrados para identificar las consultas que consumen más recursos. El reporte «Top Resource Consuming Queries» muestra las consultas que más impactan en el rendimiento de la base de datos.
- Comparación de Planes de Ejecución:
- Query Store permite comparar los planes de ejecución de una consulta en diferentes momentos. Esto es útil para detectar cambios en el comportamiento de las consultas y entender cómo los cambios en los datos o en la configuración del sistema afectan el rendimiento.
- Detección de Regresiones de Rendimiento:
- Con Query Store, puedes detectar regresiones de rendimiento cuando una consulta que anteriormente se ejecutaba rápidamente comienza a ejecutarse lentamente. Esto te permite identificar y solucionar problemas antes de que afecten significativamente a los usuarios.
Ejemplo Práctico: Análisis de una Consulta
Para ilustrar el uso de Query Store, consideremos un ejemplo práctico:
- Acceder al Reporte «Top Resource Consuming Queries»:
- En SSMS, navega a la base de datos donde está activado Query Store.
- Ve a «Query Store» en el Explorador de Objetos y selecciona «Top Resource Consuming Queries».
- Interpretar los Datos:
- En la sección izquierda del reporte, verás una gráfica que muestra el historial de las consultas con mayor tiempo de ejecución.
- Al colocar el cursor sobre una barra vertical, puedes ver la duración de la consulta en milisegundos y la cantidad de ejecuciones.
- Analizar Cambios en los Planes de Ejecución:
- En la sección derecha del reporte, observa los cambios en los planes de ejecución a lo largo del tiempo.
- Si una consulta ha tenido múltiples planes de ejecución, verás círculos que indican diferentes Plan Ids.
- Al seleccionar un Plan Id, puedes ver el plan de ejecución correspondiente en la parte inferior del reporte.
Mejoras Continuas y Consideraciones
Query Store es una herramienta poderosa que no solo facilita el monitoreo y análisis de consultas, sino que también te ayuda a mejorar el rendimiento general de tu base de datos. Aquí hay algunas consideraciones adicionales para su uso eficaz:
- Mantén el Query Store Limpio:
- Configura políticas de retención para evitar que Query Store consuma demasiado espacio en disco. Esto incluye la eliminación automática de datos antiguos que ya no son relevantes.
- Monitorea el Impacto en el Rendimiento:
- Aunque Query Store es extremadamente útil, es importante monitorear su impacto en el rendimiento del servidor. Ajusta las configuraciones según sea necesario para equilibrar la recopilación de datos y el rendimiento general del sistema.
- Capacitación Continua:
- Participa en webinars y entrenamientos para mantenerte actualizado con las últimas funcionalidades y mejores prácticas de Query Store. Esto te permitirá aprovechar al máximo esta herramienta en constante evolución.
Insertar Varias Filas en SQL Server: Simplifica tu Trabajo
Comando Read Linux: Cómo Hacer Peticiones al Usuario en Scripting
Script para saber el histórico de queries ejecutados SQL
Guía Completa para Implementar FULLTEXT en SQL
¿Qué es el Transaction Log? La Importancia en SQL Server
Cuentos de miedo para Informáticos: Historias de terror para informáticos
Tutorial completo Data Migration Assistant SQL Server
En el entorno tecnológico actual, la actualización y modernización de las infraestructuras de datos es una prioridad para muchas organizaciones. La capacidad de migrar datos de forma segura, eficiente y efectiva es vital para mantener la competitividad y aprovechar al máximo las nuevas tecnologías. Aquí es donde entra en juego el Data Migration Assistant (DMA) de Microsoft, una herramienta indispensable para facilitar las migraciones de bases de datos. En esta entrada de blog, exploraremos qué es el Data Migration Assistant, sus características principales, beneficios y cómo puede transformar el proceso de migración de datos en tu organización.
Descargar Data Migration Assistan página oficina de Microsoft:
¿Qué es el Data Migration Assistant?
El Data Migration Assistant es una herramienta gratuita proporcionada por Microsoft diseñada para ayudar a las organizaciones a migrar sus bases de datos desde versiones anteriores de SQL Server a versiones más recientes o a Azure SQL Database. La herramienta no solo simplifica el proceso de migración, sino que también proporciona un análisis detallado de la base de datos origen, identificando posibles problemas de compatibilidad y ofreciendo recomendaciones para resolverlos.
Características Principales del Data Migration Assistant
1. Evaluación de Compatibilidad
Una de las características más destacadas del DMA es su capacidad para evaluar la compatibilidad de la base de datos origen con la versión destino. El asistente identifica características obsoletas, cambios en el comportamiento y otras incompatibilidades que podrían afectar la migración.
2. Evaluación de Características
DMA puede evaluar las características y funcionalidades de las bases de datos que se están migrando, proporcionando un informe detallado sobre el uso de características específicas que podrían no estar soportadas en la versión destino.
3. Recomendaciones de Corrección
Basado en los análisis, el DMA proporciona recomendaciones específicas para corregir problemas de compatibilidad. Estas recomendaciones son cruciales para asegurar una transición suave y minimizar los riesgos asociados con la migración.
4. Evaluación de la Seguridad
El asistente también evalúa aspectos de seguridad, identificando configuraciones y prácticas que podrían no ser seguras o que podrían requerir ajustes en la nueva plataforma.
5. Migración de Esquema y Datos
Además de la evaluación, DMA facilita la migración del esquema de la base de datos y los datos a la nueva plataforma. Esta característica asegura que la estructura y el contenido de la base de datos se transfieran correctamente.
Beneficios del Uso del Data Migration Assistant
1. Reducción de Riesgos
El proceso de migración de bases de datos puede ser complejo y está sujeto a diversos riesgos, desde problemas de compatibilidad hasta la pérdida de datos. El Data Migration Assistant (DMA) mitiga estos riesgos al proporcionar una evaluación exhaustiva de la base de datos de origen. Identifica incompatibilidades y problemas potenciales antes de iniciar la migración, permitiendo a los administradores de bases de datos abordar y resolver estos problemas con antelación. Esto reduce significativamente la probabilidad de interrupciones inesperadas en el servicio, asegurando una migración más suave y confiable.
2. Ahorro de Tiempo y Recursos
La migración manual de bases de datos es una tarea laboriosa y consume muchos recursos. DMA automatiza gran parte del proceso de evaluación y migración, lo que ahorra tiempo y reduce la carga de trabajo del equipo de TI. La herramienta genera informes detallados y recomendaciones, eliminando la necesidad de realizar diagnósticos manuales extensos. Esto libera a los equipos para enfocarse en otras tareas críticas, optimizando el uso de los recursos disponibles y acelerando el proceso de migración.
3. Mejora de la Eficiencia
La eficiencia es clave en cualquier proyecto de migración. Con DMA, las organizaciones pueden abordar los problemas de compatibilidad de manera más rápida y precisa. Los informes detallados y las recomendaciones específicas permiten a los equipos de TI implementar correcciones de forma efectiva, minimizando el tiempo de inactividad y asegurando que la migración se complete en el menor tiempo posible. La herramienta también facilita la migración del esquema y los datos, asegurando que la estructura y el contenido de la base de datos se transfieran correctamente.
4. Aprovechamiento de Nuevas Funcionalidades
Migrar a versiones más recientes de SQL Server o a Azure SQL Database permite a las organizaciones aprovechar una serie de nuevas funcionalidades y mejoras. Estas incluyen mejoras en el rendimiento, la seguridad, la escalabilidad y la integración con otros servicios de Azure. DMA no solo facilita la transición a estas nuevas plataformas, sino que también asegura que las organizaciones puedan maximizar los beneficios de las nuevas características disponibles, optimizando así el rendimiento y la funcionalidad de sus bases de datos.
5. Cumplimiento Normativo y Seguridad Mejorada
En el entorno regulatorio actual, el cumplimiento normativo y la seguridad de los datos son cruciales. DMA ayuda a identificar configuraciones y prácticas que pueden no ser seguras o que no cumplen con las normativas actuales. Al migrar a una plataforma más moderna y segura, las organizaciones pueden fortalecer su postura de seguridad y asegurarse de que cumplen con los requisitos regulatorios. Esto es especialmente importante para industrias que manejan datos sensibles, como la financiera, la sanitaria y la gubernamental.
6. Escalabilidad y Flexibilidad Mejoradas
Las bases de datos modernas y las soluciones en la nube como Azure SQL Database ofrecen una escalabilidad y flexibilidad que las versiones antiguas de SQL Server no pueden igualar. DMA permite a las organizaciones migrar a estas plataformas más avanzadas, facilitando la gestión de cargas de trabajo variables y permitiendo el crecimiento y la expansión sin las limitaciones impuestas por la infraestructura local. Esta flexibilidad es esencial para responder rápidamente a las cambiantes demandas del negocio.
7. Costos Operativos Reducidos
Al migrar a plataformas en la nube o a versiones más eficientes de SQL Server, las organizaciones pueden reducir sus costos operativos. Las soluciones en la nube, por ejemplo, eliminan la necesidad de mantenimiento de hardware, actualizaciones de software y otros costos asociados con la gestión de infraestructura local. DMA facilita esta transición, ayudando a las organizaciones a beneficiarse de los modelos de costos más eficientes y escalables que ofrecen las plataformas modernas.
8. Mejora de la Continuidad del Negocio
La migración de datos bien planificada y ejecutada con DMA asegura que la continuidad del negocio no se vea comprometida. La herramienta permite una transición sin problemas con un mínimo de interrupciones, asegurando que las operaciones empresariales críticas puedan continuar sin contratiempos. Esto es vital para mantener la productividad y la satisfacción del cliente durante el proceso de migración.
Cómo Utilizar el Data Migration Assistant
1. Descarga e Instalación
El primer paso es descargar e instalar el Data Migration Assistant desde el sitio web de Microsoft.
2. Creación de un Proyecto de Evaluación
Una vez instalado, se puede crear un nuevo proyecto de evaluación para analizar la base de datos origen. Este proceso incluye seleccionar el tipo de servidor de origen y destino, y la versión específica de SQL Server o Azure SQL Database a la que se desea migrar.
3. Análisis y Revisión de Informes
Después de realizar el análisis, DMA generará informes detallados que identificarán los problemas de compatibilidad y proporcionarán recomendaciones para corregirlos.
4. Migración de Esquema y Datos
Finalmente, una vez que todos los problemas hayan sido abordados, se puede proceder a la migración del esquema y los datos usando el asistente, asegurando que la base de datos esté correctamente configurada en la nueva plataforma.
Conclusión
El Data Migration Assistant es una herramienta poderosa y esencial para cualquier organización que esté considerando la migración de sus bases de datos a versiones más recientes de SQL Server o a Azure SQL Database. Con sus capacidades de evaluación detallada, recomendaciones precisas y facilidad de uso, DMA facilita una migración más segura, eficiente y efectiva. Aprovechar esta herramienta puede significar una diferencia significativa en la modernización de tu infraestructura de datos, permitiéndote beneficiarte de las últimas innovaciones tecnológicas con confianza y tranquilidad.
Procedimientos Almacenados Temporales en SQL Server
Script Creación de Roles en SQL Server
UPDATE JOIN en SQL para Actualizar Tablas Relacionadas
Mejores cuentos de vikingos
Si buscas una lectura que te transporte a un mundo de aventuras épicas, leyendas ancestrales y guerreros valientes, un libro de cuentos de vikingos es justo lo que necesitas. En este blog, te mostraré por qué deberías darle una oportunidad a estos relatos fascinantes. Prepárate para embarcarte en un viaje inolvidable a través de los fiordos escandinavos y más allá.
1. Sumérgete en la Historia y la Mitología Nórdica
Los cuentos de vikingos están profundamente arraigados en la rica mitología nórdica. Leyendas de dioses como Odin, Thor y Loki no solo entretienen, sino que también te ofrecen una comprensión más profunda de la cultura y las creencias de los antiguos escandinavos. Cada historia es una puerta a un universo lleno de magia, criaturas míticas y héroes valientes.



























2. Vive Aventuras Épicas
En estos cuentos, los vikingos no solo son guerreros temibles, sino también aventureros incansables. Desde travesías por mares tempestuosos hasta batallas épicas contra dragones, cada relato está lleno de acción y emoción. Leer sobre las hazañas de estos valientes hombres y mujeres te hará sentir parte de sus intrépidas aventuras.
3. Personajes Inolvidables
Los cuentos de vikingos están poblados por personajes complejos y memorables. Héroes como Ragnar Lothbrok, Lagertha y Bjorn Ironside te cautivarán con sus historias de valor, honor y astucia. Estos personajes no solo enfrentan peligros externos, sino que también luchan con sus propias dudas y miedos, haciendo que sus historias sean aún más conmovedoras y humanas.
4. Aprendizaje Cultural y Social
Al leer cuentos de vikingos, también aprenderás sobre las costumbres, la sociedad y el estilo de vida de estos antiguos pueblos. Desde sus rituales religiosos hasta su arte de la guerra, cada historia te ofrece una visión detallada de cómo vivían y pensaban los vikingos. Esta inmersión cultural te enriquecerá y te hará apreciar aún más su legado.
5. Estilo Narrativo Atractivo
Los cuentos de vikingos están escritos con un estilo narrativo que atrapa desde el primer momento. Los autores utilizan descripciones vívidas y diálogos envolventes para crear una experiencia de lectura inmersiva. Cada página te sumerge más en el mundo vikingo, haciendo que sea difícil dejar el libro de lado.
Conclusión
Leer un libro de cuentos de vikingos no es solo una manera de entretenerte, sino también de embarcarte en un viaje cultural e histórico fascinante. Estos relatos te ofrecen aventuras épicas, personajes inolvidables y una profunda inmersión en la mitología nórdica. Así que, si buscas una lectura que te inspire y te emocione, no lo pienses más y adéntrate en el mundo de los vikingos. ¡Tu próxima aventura literaria te espera
Enlaces de interés:
Auditoría descubriendo las Conexiones en SQL Server
Archivos MDF y NDF en SQL Server: Guía Completa