Mostrando entradas con la etiqueta MSSQL 2016. Mostrar todas las entradas
Mostrando entradas con la etiqueta MSSQL 2016. Mostrar todas las entradas

miércoles, 16 de abril de 2025

Global SQL Server Implementation:

Global SQL Server Implementation: 
1. Key Findings:
Microsoft SQL Server remains a leading relational database globally. SQL Server 2019 is the most widely adopted version, with a significant market share. Adoption of the latest version, SQL Server 2022, is growing, indicating a move towards newer technologies. The Standard Edition is the most popular in terms of the number of servers, while the Enterprise Edition is prevalent in larger systems with higher core counts. Regional adoption trends are influenced by economic factors and technological maturity.  
2. Global Version Adoption:
SQL Server 2019 holds the largest global market share at 44%, followed by SQL Server 2022 at 21% . Other significant versions include SQL Server 2016 (15%) and SQL Server 2017 (12%). Older versions like 2014 and earlier account for a smaller percentage of the market. Azure SQL DB and Managed Instances have a 2% share. The growth of SQL Server 2022 is likely driven by the approaching end-of-life for older versions.  
Global Version Distribution
         Source: SQL ConstantCare® (2025), inferred market trends
3. Continental and Country Insights:
Detailed statistics by continent are limited, but North America is likely an early adopter of newer versions. The Asia Pacific region shows rapid digital transformation, suggesting increasing adoption of recent versions. India has a notable presence of Microsoft SQL Server users.  
Adoption by Continent
   Continent Adoption
Country-Specific Breakdown
       Country Analysis
 
4. Global Edition Adoption:
The Standard Edition accounts for 50% of the global market in terms of server count, while the Enterprise Edition holds 35% . However, the distribution is closer when considering licensed cores, with Standard at 13,862 and Enterprise at 12,871 . The Express Edition is a free, entry-level database suitable for learning and small-scale applications.  
5. Strategic Implications:
The dominance of SQL Server 2019 suggests a preference for stability, but the increasing adoption of SQL Server 2022 indicates a gradual shift towards the latest features . The popularity of the Standard Edition highlights a balance between cost and functionality for many organizations, while the significant core count of the Enterprise Edition reflects its use in high-demand environments . Cloud adoption via Azure SQL DB and Managed Instances is still relatively low in the reported data, suggesting a continued reliance on on-premises solutions.  
6. Limitations:
This analysis is based on available industry reports and surveys, which may have inherent limitations in geographical granularity and real-time accuracy.  
7. Conclusion:
Microsoft SQL Server continues to be a key player in the global database market. While SQL Server 2019 remains the leader, the growing adoption of SQL Server 2022 and the differing usage patterns of Standard and Enterprise Editions across regions provide valuable insights for strategic technology planning.


martes, 1 de abril de 2025

RECOMMENDED TOOLS FOR DBAs - Oracle - SQL and MySQL

RECOMMENDED TOOLS FOR DBAs - Oracle - SQL and MySQL

This is a collection of tools I have used and identified as highly valuable for our daily tasks as DBAs.

1. Database Management Systems (DBMS):

  • Microsoft SQL Server Management Studio (SSMS)
  • Oracle SQL Developer
  • MySQL Workbench
  • phpMyAdmin

Cross-Platform Tools: 
  • Toad for Oracle/MySQL
  • Percona Toolkit MySQL, MariaDB, MongoDB, and PostgreSQL server 

2. Monitoring & Performance Analysis Tools:
  • SolarWinds Database Performance Analyzer
  • Nagios
  • Zabbix
  • Redgate SQL Monitor
  • SQL Server Profiler

3. Backup & Recovery Tools:
  • IBM TIVOLI Data Protection for SQL Server
  • Veeam Backup & Replication
  • CommVault
  • Veritas NetBackup

4. Security Tools:
  • SQL Server Security Essentials
  • Imperva SecureSphere

5. Data Migration Tools:
  • Microsoft Data Migration Assistant
  • SQL Server Integration Services (SSIS)
  • AWS Database Migration Service (DMS)

6. Audit & Compliance Tools:
  • Redgate SQL Compliance Manager
  • SQL Server Audit

7. Development & Query Tools:
  • Toad
  • Azure Data Studio
  • SQL Server Data Tools (SSDT)

8. Reporting & Business Intelligence Tools:
  • SQL Server Reporting Services (SSRS)
  • Power BI
  • Crystal Reports
  • Tableau
  • Excel

9. Virtualization & Cloud Management Tools:
  • Microsoft Azure Portal (Azure SQL DB, Synapse)
  • AWS Management Console (RDS, Redshift)
  • Google Cloud Console (Cloud SQL, BigQuery)
  • VMware vSphere Client


Mejores Prácticas para Índices en SQL Server (2016-2022)

Mejores Prácticas para Índices en SQL Server (2016-2022)
 
Este documento proporciona una guía básica para mejorar el rendimiento de las consultas y facilitar el mantenimiento de los índices en Microsoft SQL Server, abarcando las versiones 2016, 2019 y 2022.
 
1. Diseño y Creación de Índices
 
1.1 Identificar las Columnas Clave:
 
* Cláusula WHERE: Analice las columnas utilizadas con frecuencia en las cláusulas `WHERE` para la búsqueda y filtrado de datos.
* Cláusula JOIN: Identifique las columnas utilizadas en las condiciones de `JOIN` entre tablas.
* Cláusula ORDER BY y GROUP BY: Considere indexar las columnas utilizadas para ordenar y agrupar resultados.
* Columnas de Búsqueda Frecuente: Priorice las columnas que se utilizan en búsquedas exactas o por rango.
 
1.2 Elegir el Tipo de Índice Correcto:
 
* Índices Clustered:
    * Solo puede haber un índice clustered por tabla.
    * Determina el orden físico de los datos en el disco.
    * Ideal para columnas que se consultan por rango, se utilizan con frecuencia en `WHERE` y devuelven rangos de datos.
    * Considere usar una clave primaria como índice clustered si es secuencial y no demasiado ancha.
* Índices Nonclustered:
    * Pueden existir múltiples índices nonclustered por tabla.
    * Almacenan una estructura de árbol separada de los datos, conteniendo la clave de índice y un puntero a la fila de datos (RID para heaps, clave clustered para tablas con índice clustered).
    * Útiles para columnas que se utilizan en búsquedas específicas y no requieren recuperar todas las columnas de la tabla.
    * Considere incluir columnas adicionales (`INCLUDE`) en los índices nonclustered para cubrir más consultas sin necesidad de ir a la tabla base (índices covering).
 
1.3 Consideraciones al Crear Índices:
 
* Mantener los Índices Estrechos: Índices con menos columnas ocupan menos espacio en disco y memoria, y son más eficientes de mantener.
* Evitar la Indexación Excesiva: Demasiados índices pueden ralentizar las operaciones de inserción, actualización y eliminación, ya que todos los índices deben mantenerse.
* Analizar las Estadísticas de Consulta: Utilice el Plan de Ejecución de las consultas en SQL Server Management Studio (SSMS) para identificar cuellos de botella y sugerencias de índices faltantes.
* Probar el Rendimiento: Después de crear o modificar índices, pruebe el rendimiento de las consultas relevantes para asegurar la mejora esperada.
 
2. Mantenimiento de Índices
 
2.1 Desfragmentación y Reorganización:
 
Con el tiempo, los índices pueden fragmentarse, lo que significa que el orden lógico de las páginas del índice no coincide con su orden físico en el disco. Esto puede degradar el rendimiento de las consultas.
* `ALTER INDEX ... REORGANIZE`: Reordena las páginas de nivel hoja de un índice clustered o nonclustered para que coincidan con el orden lógico (orden de izquierda a derecha de los valores de clave de índice). Es una operación rápida y con pocos recursos, realizada en línea (sin bloquear la tabla). Recomendado para fragmentación baja a moderada (menor del 30%).
* `ALTER INDEX ... REBUILD`: Elimina y vuelve a crear el índice. Es una operación más intensiva en recursos y puede realizarse fuera de línea (bloqueando la tabla) o en línea (en ediciones Enterprise y algunas Standard). Elimina completamente la fragmentación. Recomendado para fragmentación alta (mayor del 30%).
 
2.2 Actualización de Estadísticas:
 
* Las estadísticas de los índices proporcionan información sobre la distribución de los valores en las columnas indexadas. El optimizador de consultas utiliza estas estadísticas para generar planes de ejecución eficientes.
* Es crucial mantener las estadísticas actualizadas, especialmente después de cambios significativos en los datos (grandes inserciones, eliminaciones o actualizaciones).
* `UPDATE STATISTICS`: Comando utilizado para actualizar las estadísticas de uno o más índices o de una tabla completa.
* Considere configurar trabajos de mantenimiento para actualizar las estadísticas de forma regular.
 
2.3 Identificación de Índices No Utilizados o Duplicados:
 
* Con el tiempo, algunos índices pueden dejar de ser útiles debido a cambios en los patrones de consulta. Los índices no utilizados consumen espacio y recursos de mantenimiento innecesariamente.
* SQL Server proporciona Dynamic Management Views (DMVs) como `sys.dm_db_index_usage_stats` para monitorear el uso de los índices.
* Identifique y elimine los índices que no se utilizan o que son redundantes (es decir, un índice cubre las mismas columnas que otro, pero en un orden menos óptimo).
 
3. Implementación y Automatización
 
3.1 Plan de Mantenimiento:
 
* Utilice el Asistente para el Plan de Mantenimiento en SSMS o cree trabajos de SQL Server Agent personalizados para automatizar las tareas de mantenimiento de índices, como la reorganización, la reconstrucción y la actualización de estadísticas.
* Programe estos trabajos para que se ejecuten durante las horas de menor actividad del sistema para minimizar el impacto en el rendimiento.
 
3.2 Monitoreo Regular:
 
* Supervise el rendimiento de las consultas y el estado de los índices de forma regular.
* Utilice DMVs y herramientas de monitoreo de rendimiento para identificar problemas y áreas de mejora.
 
3.3 Revisión Periódica del Diseño de Índices:
 
A medida que cambian los requisitos de la aplicación y los patrones de consulta, revise el diseño de los índices para asegurar que sigan siendo óptimos.
Considere eliminar índices innecesarios y crear nuevos índices según sea necesario.
 
4. Consideraciones Específicas por Versión (Breve)
 
* SQL Server 2016: Introdujo mejoras en la reconstrucción de índices en línea para ediciones Standard.
* SQL Server 2019: Mejoras en la inteligencia de consultas, que pueden influir en cómo el optimizador utiliza los índices.
* SQL Server 2022: Introdujo nuevas características como los índices clustered columnstore con capacidad de escritura y mejoras en la optimización de consultas. Es importante revisar la documentación específica de la versión para aprovechar al máximo las nuevas funcionalidades relacionadas con los índices.
 
Conclusión
 
Una estrategia sólida de diseño y mantenimiento de índices es fundamental para garantizar un rendimiento óptimo de las bases de datos SQL Server. Al seguir estas mejores prácticas básicas y adaptarlas a las necesidades específicas de su entorno, puede mejorar significativamente la velocidad de las consultas y la eficiencia general del sistema. Recuerde que el análisis continuo y la adaptación son clave para mantener un entorno de base de datos de alto rendimiento.

lunes, 24 de agosto de 2020

Scripts para desbloqueo de usuario en SQL Server 2000 a 2019, sin cambiar la contraseña

Este script lo utilizo para identificar el estado actual del usuario y posteriormente desbloquearlo generando la documentación adecuada para entregar al cliente sobre lo realizado

PROCESO IDENTIFICAR ESTADO DEL USUARIO

USE [master]
GO
SET NOCOUNT ON
SELECT @@servername as Server,name, CASE CAST(is_policy_checked AS TINYINT)+CAST(is_expiration_checked AS TINYINT)
WHEN 0 THEN 'Not Enforced'
WHEN 1 THEN 'Contraseña - Sin expiración'
WHEN 2 THEN 'Contraseña con Expiración' END AS PasswordEnforcement,
LOGINPROPERTY(name,'BadPasswordCount') AS BadPasswordCount,
LOGINPROPERTY(name,'BadPasswordTime') AS BadPasswordTime,
LOGINPROPERTY(name,'DaysUntilExpiration') AS DaysUntilExpiration,
default_database_name,
CASE WHEN LOGINPROPERTY(name,'IsExpired') = 0 THEN 'NO' ELSE 'SI' END AS IsExpired,
CASE WHEN LOGINPROPERTY(name,'IsLocked') = 0 THEN 'NO' ELSE 'SI' END AS IsLocked,
CASE WHEN LOGINPROPERTY(name,'IsMustChange') = 0 THEN 'NO' ELSE 'SI' END AS IsMustChange,
LOGINPROPERTY(name,'LockoutTime') AS LockoutTime,
LOGINPROPERTY(name,'PasswordLastSetTime') AS PasswordLastSetTime
FROM sys.sql_logins
where name in('USUARIO DESBLOQUEAR')
ORDER BY name

PROCESO DESBLOQUEO-EXTENDER DURACION DEL USUARIO DEL USUARIO

USE [master]
GO
--SQL Server 2012 y superiores usan SHA2-512 (512 bytes hash)
--SQL Server 2000 hasta 2008 R2 usan SHA1 (160 bytes hash)
declare @passhashedstr nvarchar(1024)
declare @sqltext nvarchar(1024)
declare @sqlstr nvarchar(1024)
declare @loginuser sysname
set @loginuser=N'e0283454'
select @passhashedstr=convert(nvarchar(514),LOGINPROPERTY(@loginuser,'PASSWORDHASH'),1 )
--SELECT LOGINPROPERTY(@loginuser,'PASSWORDHASH')
--select @passhashedstr
set  @sqlstr='ALTER LOGIN ['+ @loginuser + '] WITH CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'
EXECUTE sp_executesql @sqlstr
set  @sqlstr='ALTER LOGIN ['+ @loginuser + '] WITH PASSWORD = ' +@passhashedstr +' HASHED;'
--select @sqlstr
--select Convert(NVARCHAR(MAX), @passhashed, 1)
EXECUTE sp_executesql @sqlstr
set  @sqlstr='ALTER LOGIN ['+ @loginuser + '] WITH CHECK_EXPIRATION=ON, CHECK_POLICY=ON'
EXECUTE sp_executesql @sqlstr
   select @sqltext=
'Política Actual: '+ CASE CAST([is_policy_checked] AS tinyint) + CAST([is_expiration_checked] AS TINYINT)
WHEN 0 THEN 'No Forzado' WHEN 1 THEN 'Password - No Expira' WHEN 2 THEN 'Password con Expiración'  END
+ '; Días para Expirar: '+isnull(convert(nvarchar(4),LOGINPROPERTY(@loginuser,'DaysUntilExpiration')), 'N/A')
+' Fecha Expiración -1: ' + case convert(nvarchar(4),LOGINPROPERTY(@loginuser,'DaysUntilExpiration')) when null then 'N/A'
   else convert(nvarchar(23),dateadd(d,convert(int,LOGINPROPERTY(@loginuser,'DaysUntilExpiration'))-1,getdate())) end
+' Expirado: '+CASE WHEN convert(nvarchar(1),LOGINPROPERTY(@loginuser,'IsExpired')) = 0 THEN 'No' ELSE 'Si' END
+' Bloqueado: '+CASE WHEN convert(nvarchar(1),LOGINPROPERTY(@loginuser,'IsLocked')) = 0 THEN 'No' ELSE 'Si' END
+' Fecha Bloqueo: '+ convert(nvarchar(23),LOGINPROPERTY(@loginuser,'LockoutTime'))
FROM sys.sql_logins where name=@loginuser
Print 'Desbloqueo usuario por clave o expiración
Se realizaron las siguientes acciones:
1. Bloqueo de usuario en motor SQL Server instancia '+ @@servername +'
2. Autogenera password usuario ' + @loginuser +', realiza desbloqueo por expiración o intentos fallidos
3. Se Valida propiedades de cuenta '+ @loginuser +';'+ @sqltext

miércoles, 30 de septiembre de 2015

Algunas novedades vistas en el CTP 2.3 de SQL Server 2016

Buenos días, como anteriormente comente sobre la liberación del CTP 2 también ahora lo hago para el CTP 2.3 en este caso encontramos algunas adiciones interesantes como son:
  • Soporte para seguridad a nivel de Fila sobre tablas en memoria OLTP
  • Optimización de rendimiento para Data Warehouse en memoria (almacenamiento en columna) 
  • Varias mejoras de rendimiento en SQL Server Analysis Services, entre estas mejoras para consultas DAX
  • Mejoras en Reporting Services, en este encontramos un generador de reportes actualizado con un tema moderno y reporte de prestaciones para los navegadores modernos
  • Entre otras mejoras podremos encontrar  reformas en SQL Server Integration, ejecución de la consulta y DBCC CHECKDB.
Para ampliar la información se pueden consultar los siguientes links

Datasheet
http://download.microsoft.com/download/F/D/3/FD33C34D-3B65-4DA9-8A9F-0B456656DE3B/SQL_Server_2016_datasheet.pdf

Para descargar la Beta
http://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2016

Blog
http://blogs.technet.com/b/dataplatforminsider/archive/2015/09/02/sql-server-2016-community-technology-preview-2-3-is-available.aspx

Analysis Services
http://blogs.msdn.com/b/analysisservices/archive/2015/09/02/what-s-new-in-microsoft-sql-server-analysis-services-tabular-models-in-sql-server-2016-ctp-2-3.aspx

Reporting Services
http://blogs.msdn.com/b/sqlrsteamblog/archive/2015/09/02/what-s-new-in-reporting-services-in-sql-server-2016-ctp-2-3.aspx

lunes, 28 de septiembre de 2015

Algunas novedades vistas en el ctp 2 de Sql Server 2016

Buenos días, quiero comentarles que algo que me parece interesante sobre la beta (CTP2) de SQL Server 2016. Entre las características destacadas encontramos

Siempre Encriptado: Una nueva característica especialmente diseñada para la seguridad de los datos de aplicaciones de misión crítica. Protege datos en reposo y en movimiento en donde la llave de encriptación reside en la aplicación y esta encriptación ocurre transparentemente dentro de la aplicación.

Base de datos ampliada: A medida que las principales tablas transaccionales aumentan de tamaño, se podría requerir el archivar datos históricos para reducir costos y mantener rendimientos más rápidos. Esta tecnología que permite aumentar de forma dinámica datos transaccionales cálidos o fríos para Microsoft Azure, así la data de la operación está siempre a la mano sin importar su tamaño, reduciendo los costos al utilizar Azure

 Y más características que podemos ver en los siguientes links

 Datasheet

 http://download.microsoft.com/download/F/D/3/FD33C34D-3B65-4DA9-8A9F-0B456656DE3B/SQL_Server_2016_datasheet.pdf

 Para descargar la Beta

http://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2016

Blog

http://blogs.technet.com/b/dataplatforminsider/archive/2015/05/04/sql-server-2016-public-preview-coming-this-summer.aspx