SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite....

37
SolidQ - España y Portugal Rey Juan Carlos I, 88, 4C, 03340, Albatera, Alicante, España solidq.com +34 800 300 800 oficina +34 965 485 692 oficina (intl) +34 902 946 458 fax [email protected] SQL Server Health Check Lite Análisis para AX-SQLServer SolidQ 13/09/2016

Transcript of SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite....

Page 1: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

SolidQ - España y Portugal

Rey Juan Carlos I, 88, 4C,

03340, Albatera,

Alicante, España

solidq.com

+34 800 300 800 oficina

+34 965 485 692 oficina (intl)

+34 902 946 458 fax

[email protected]

SQL Server Health Check Lite

Análisis para AX-SQLServer

SolidQ

13/09/2016

Page 2: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

2

Contenido

Introducción ............................................................................................................................................................................................................. 4

Objetivo del documento ...................................................................................................................................................................................... 4

Resumen Ejecutivo ................................................................................................................................................................................................... 4

Corto Plazo ........................................................................................................................................................................................................... 4

Medio Plazo ......................................................................................................................................................................................................... 5

Largo Plazo ........................................................................................................................................................................................................... 5

Información sobre el servidor analizado .................................................................................................................................................................. 6

Número de procesadores físicos: 4 ..................................................................................................................................................................... 6

Memoria .............................................................................................................................................................................................................. 7

Adaptadores de red ............................................................................................................................................................................................. 8

Recursos compartidos ......................................................................................................................................................................................... 9

Subsistema de disco y niveles RAID ..................................................................................................................................................................... 9

Sistemas de almacenamiento ............................................................................................................................................................................ 10

Alineamiento de particiones .............................................................................................................................................................................. 11

Otros servicios corriendo en el servidor ............................................................................................................................................................ 13

Configuración de SQL Server: SQLAX-SERVER12 .................................................................................................................................................... 14

Versión de SQL Server ........................................................................................................................................................................................ 14

Configuración de la instancia de SQL Server ..................................................................................................................................................... 15

Cuenta de servicio de SQL Server ...................................................................................................................................................................... 18

SQL Server Tempdb Información ....................................................................................................................................................................... 20

Page 3: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

3

Database Mail .................................................................................................................................................................................................... 22

MSDB ................................................................................................................................................................................................................. 22

Collations ........................................................................................................................................................................................................... 23

Información sobre el sistema operativo ................................................................................................................................................................ 27

Ficheros de base de datos: Espacio utilizado ......................................................................................................................................................... 27

Espacio por objetos de base de datos.................................................................................................................................................................... 29

Información de Backups .................................................................................................................................................................................... 31

Análisis de eficiencia de los Backups diferenciales ............................................................................................................................................ 32

Databases Configuration ........................................................................................................................................................................................ 33

Estadísticas ........................................................................................................................................................................................................ 33

Sección de visor de eventos ................................................................................................................................................................................... 34

Patrones de consulta en la instancia SQLAX-SERVER12......................................................................................................................................... 36

Planes de consulta con mayor coste CPU .......................................................................................................................................................... 36

Planes de consulta con mayor número de ejecuciones .................................................................................................................................... 36

Planes de consulta con mayor número carga en lectura-escritura ................................................................................................................... 37

Page 4: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

4

Introducción

Objetivo del documento

El objetivo de este documento es la identificación de cualquier práctica o configuración que debería ser modificada para mejorar la

escalabilidad, seguridad y rendimiento del servicio de SQL Server. Basándonos en los datos recolectados de vuestros sistemas SQL Server

detallaremos los aspectos que se pueden mejorar y además nuestras recomendaciones para mejorar los mismos. Estas recomendaciones

de Buenas prácticas se realizan basándonos en nuestra amplia experiencia trabajando con SQL Server.

Resumen Ejecutivo

WQL recurrió a SolidQ para realizar las siguientes acciones:

1. Un chequeo de la configuración de SQL Server de su servidor de producción.

2. Una revisión básica de los contadores de rendimiento

3. Un análisis e investigación de potenciales problemas relacionados con interbloqueos.

Corto Plazo

Actualizar la versión de SQL Server 2012 con el SP3 si las aplicaciones AX y SharePoint instaladas son compatibles. Esto solucionaría los problemas de errores que se disparan constantemente en el log de errores de SQL Server

Crear un job o utilizar Resource Governor para cambiar el grado de paralelismo para aumentar la rapidez de las tareas de mantenimiento de las bbdd

Cambiar las cuentas de servicio de SQL Server. Cada servicio debe tener una cuenta distinta con mínimos permisos. La actual es administrador de SQL Server. Esta tarea requiere parada del servicio

Hay un número excesivo de ficheros de datos en la base datos Tempdb. Se deben dejar 4 y eliminar 3. Por nuestra experiencia si el sistema usa mucho la tempdb es posible que SQL Server no deje borrarlos en caliente, por lo que es posible que hubiera que hacer parada del servicio

Page 5: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

5

Se recomienda usar una cuenta de Database Mail en lugar de SQL Mail para las notificaciones por correo

Recomendamos crear un plan de mantenimiento que borre los registros históricos antiguos de las ejecuciones de jobs. Actualmente hay 3 años de información, consideramos que con un año es suficiente si no se está utilizando esa información para ningún análisis

Recomendamos crear un plan de mantenimiento que recalcule las estadísticas de las bases de datos

Medio Plazo

Se recomienda incorporar backups diferenciales para aquellas bases de datos con más uso

Largo Plazo

No se ha detectado ninguna estrategia de Disaster Recovery. Recomendamos incorporar algún sistema de alta disponibilidad para evitar en caso de caída tener que recuperar todas las bases de datos mediante restores de backups. Los más comunes que recomendamos son:

o Grupos de Disponibilidad Always On. Failover automático y permite la reutilización de los nodos secundarios para consultas o Cluster de SQL Server. Failover automático o Log Shipping. Failover manual

Page 6: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

6

Información sobre el servidor analizado

El servidor analizado funciona mediante el sistema operativo Microsoft Windows Server 2012 Datacenter versión 6.2.9200 (9200).

Dispone de 28671 Mb de RAM físicos, de los cuales en el momento de la captura de datos, se encontraban disponibles 8375 Mb.

Número de procesadores físicos: 4

Nº de procesador: 1

Velocidad de procesador (Mhz): 2.095

Tamaño de caché L2: 0

El modo de energía del servidor está establecido en “High Performance” por lo que en caso de que necesitara saltar el turbo podría hacerlo.

Page 7: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

7

Memoria

Número de bancos de memoria instaladas: 2

Etiqueta del banco de memoria: Physical Memory 0

Velocidad bus(MHZ): 0

Tamaño (Mb): 512

Page 8: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

8

Etiqueta del banco de memoria: Physical Memory 1

Velocidad bus(MHZ): 0

Tamaño (Mb): 28160

Adaptadores de red

Descripción Alias MAC Velocidad de conexión actual (Mb/s)

WAN Miniport (L2TP) -1

WAN Miniport (SSTP) -1

WAN Miniport (IKEv2) -1

WAN Miniport (PPTP) -1

WAN Miniport (PPPOE) -1

WAN Miniport (IP) -1

WAN Miniport (IPv6) -1

WAN Miniport (Network Monitor) -1

Microsoft Kernel Debug Network Adapter -1

RAS Async Adapter -1

Se puede encontrar la tabla completa con los datos en el libro de Excel "SQL-AX_SystemInfo__20160913-0131" En la hoja "Network

Adapters".

Page 9: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

9

Recursos compartidos

Recurso Ruta compartida Descripción

ADMIN$ C:\Windows Remote Admin

AXFiles G:\AXFiles

C$ C:\ Default share

D$ D:\ Default share

G$ G:\ Default share

H$ H:\ Default share

I$ I:\ Default share

IPC$ Remote IPC

J$ J:\ Default share

K$ K:\ Default share

Subsistema de disco y niveles RAID

El servidor es un servidor Azure con discos normales de 500 IOPS sin ninguna configuración raid.

Page 10: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

10

Sistemas de almacenamiento

Esta sección establece que la organización de los mecanismos de almacenamiento y de distribución de las estructuras persistentes cumple

con las buenas prácticas.

La tabla siguiente muestra los volúmenes actuales del servidor y los tamaños de bloque del clúster.

Unidad Sistema de ficheros Tamaño de bloque Tipo

C: NTFS 4.096 Disco lógico

D: NTFS 4.096 Disco lógico

K: NTFS 65.536 Disco lógico

G: NTFS 65.536 Disco lógico

H: NTFS 65.536 Disco lógico

I: NTFS 65.536 Disco lógico

J: NTFS 4.096 Disco lógico

Recomendación: Para mejorar el rendimiento de las operaciones de Entrada/Salida se deben formatear las nuevas particiones a 64Kb como el tamaño de la unidad de alojamiento. Como se muestra en la imagen siguiente:

Page 11: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

11

Alineamiento de particiones

Esta sección establece si las divisiones verticales de las estructuras de datos son adecuados para conseguir los requerimientos de

rendimiento y de carga. Necesitamos asegurarnos de que el desplazamiento del primer bloque de cada partición es un múltiplo de 64k:

Page 12: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

12

Nota: Este diagrama se corresponde con el modelo de almacenamiento NTFS por defecto, con formateo de 4kb por bloque. El diagrama no está escalado.

Si asumimos un tamaño de división de 64Kb, hay 8-512B sectores por cada clúster de 4KB de NTFS; hay 16-4Kb clústeres NTFS por cada unidad de 64Kb

Por definición, existen 63 sectores ocultos desalineados (amarillo)

Si nos fijamos en el punto 3 de la imagen (Default layout), al realizar la lectura del enésimo clúster, tendremos que realizar dos lecturas E/S reales puesto que dicho clúster se encuentra en dos bloques diferentes

En el caso 4 de la imagen (Aligned layout), siempre necesitaremos una única lectura únicamente, leamos el clúster que leamos

Page 13: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

13

La siguiente tabla muestra el alineamiento de las particiones de los discos del servidor:

Particion Tamaño de bloqe Desplazamiento inicial ¿Está alineado?

Disk #3, Partition #0 512 1.048.576 Cierto

Disk #1, Partition #0 512 1.048.576 Cierto

Disk #5, Partition #0 512 1.048.576 Cierto

Disk #0, Partition #0 512 1.048.576 Cierto

Disk #2, Partition #0 512 1.048.576 Cierto

Disk #4, Partition #0 512 1.048.576 Cierto

Disk #6, Partition #0 512 1.048.576 Cierto

Otros servicios corriendo en el servidor

Además del servicio de SQL Server hay más servicios ejecutándose en el servidor y utilizando recursos que pueden reducir el rendimiento

de SQL Server:

AeLookupSvc; Appinfo; BFE; BrokerInfrastructure; CertPropSvc; CryptSvc; DcomLaunch; Dhcp; DIAHostService; Dnscache; DPS; EFS;

EventLog; EventSystem; FontCache; gpsvc; IKEEXT; iphlpsvc; KeyIso; LanmanServer; LanmanWorkstation; lmhosts; LSM; MpsSvc;

Netlogon; Netman; netprofm; NlaSvc; nsi; pla; PlugPlay; PolicyAgent; Power; ProfSvc; RemoteRegistry; RpcEptMapper; RpcSs; SamSs;

Schedule; SENS; SessionEnv; ShellHWDetection; Spooler; sppsvc; SQLSERVERAGENT; TermService; Themes; TrkWks; TrustedInstaller;

UALSVC; UmRdpService; vmicheartbeat; vmickvpexchange; vmicrdv; vmicshutdown; vmictimesync; vmicvss; W32Time; Winmgmt;

WinRM; wmiApSr

Page 14: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

14

Configuración de SQL Server: SQLAX-SERVER12

Versión de SQL Server

La instancia que estamos analizando es una 2012 Enterprise SP1 y actualmente existe hasta un SP3. Según hemos visto en la instancia está

instalada en la instancia AX y Sharepoint. Aconsejamos revisar con los proveedores de dichos productos si las versiones de estos programas

son incompatibles con el SP3. Si no son incompatibles recomendamos instalarlo en un entorno de prueba y tras realizar los tests que se

consideren convenientes para cada producto si las pruebas son correctas implantarlo en producción.

Referencia: http://sqlserverbuilds.blogspot.com.es/

Page 15: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

15

Configuración de la instancia de SQL Server

La siguiente tabla muestra algunas de las propiedades más interesantes de sp_configure:

Propiedad Valor de ejecución

backup compression default 1

clr enabled 0

default trace enabled 1

filestream access level 0

fill factor (%) 0

max degree of parallelism 1

max server memory (MB) 7.168

max worker threads 0

min memory per query (KB) 1.024

min server memory (MB) 4.096

optimize for ad hoc workloads 0

remote access 1

remote admin connections 0

xp_cmdshell 0

Se puede encontrar la tabla completa con los datos en el libro de Excel "SQL-AX_SqlServer__20160913-0131" En la hoja "SpConfigure".

Page 16: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

16

Los parámetros más importantes:

Backup compression default, esta establecidos con valor 1, esto quiere decir que por defecto los backups los realizará comprimiendo

Max server memory (MB), la instancia tiene configurado un máximo de 7.168 MB de memoria máxima por lo que eso garantiza que no podrá coger la cantidad total de memoria del servidor 28 GB y por tanto competir con el sistema operativo o con otros servicios. Importante, el que este configurada esta cantidad de 7 GB no quiere decir que sea suficiente. Para conocer esto se necesitaría un HC Normal.

Max degree of paralelism, el valor actual es 1, este valor es correcto ya que el producto AX indica en sus especificaciones que debe ser así:

Esta especificación cambia el valor cuando se tiene que actualizar debido a algún upgrade, momento en el cual se usa esta otra regla:

Importante, el configurar el grado de paralelismo con valor 1 hace que cualquier tarea de la instancia no pueda usar paralelismo (varios cores al mismo tiempo). Esto puede afectar a la duración de las tareas de mantenimiento de las bases de datos como (backups, checkdbs, defragmentación, recalculo de estadísticas etc). El grado de paralelismo para estas tareas que no son de AX sigue el siguiente criterio:

a) For servers that have eight or less processors, use the following configuration where N equals the number of processors: max

degree of parallelism = 0 to N.

b) For servers that use more than eight processors, use the following configuration: max degree of parallelism = 8.

Page 17: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

17

c) For servers that have NUMA configured, max degree of parallelism should not exceed the number of CPUs that are assigned to

each NUMA node with the max value capped to 8. This will increase the likelyhood of all parallel threads of a query to be located

within a NUMA Node and avoid costly remote node data look ups.

d) For servers that have hyper-threading enabled, the max degree of parallelism value should not exceed the number of physical

processors.

Use these same guidelines when setting the MAXDOP option for Resource Governor workload groups. The maximum value of 8

provided in the above guideline is applicable for typical SQL Server activity and the overhead for the exchange operators used in

parallel query plans. You could vary this maximum value depending upon your specific application patterns and concurrent activity

on the SQL Server. For example:

- If you have very small number of concurrently executing queries relative to the number of processors, then you can set maxdop

to a higher value like 16.

- If you have very large number of concurrently executing queries relative to the number of processors, then you can set maxdop

to a lower value such as 4.

Any value you propose to use should be thoroughly tested against the specific application activity or pattern of queries.

For more info: http://support.microsoft.com/kb/2023536

Lo que se propone para solventar este problema y cumplir con las disposiciones de AX sugerimos: o Crear un job que cambie el grado de paralelismo a valor 4 (es el que le corresponde según la regla anterior) cuando comiencen

estas tareas de mantenimiento (Tarde/Noche). Cuando finalicen volverlo a poner en 1 que es lo que solicita AX (8 de la mañana por ejemplo)

Page 18: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

18

o Puesto que tenéis versión Enterprise se puede usar Resource Governor. Esta utilidad clasifica las conexiones y permite garantizar una cantidad de recursos (memoria, cpu, grado de paralelismo, iops de disco). Creando un grupo específico para AX y otro para las tareas de mantenimiento se solucionaría

Cuenta de servicio de SQL Server

El servicio de SQL server que estamos analizando arranca bajo el usuario SQLSERVER\admACT:

Como se puede ver en la siguiente imagen este usuario del dominio es administrador en SQL Server.

Page 19: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

19

Microsoft recomienda ejecutar los servicios de SQL Server por separado en distintas cuentas de Windows. Siempre que sea posible, utilice

derechos de Windows independientes y bajos, o cuentas de usuario local para cada servicio de SQL Server.

Hay que crear una cuenta distinta para cada servicio y con los mínimos privilegios posibles

El aislamiento de servicios reduce el riesgo de que se utilice un servicio cuya seguridad se haya vulnerado para vulnerar la seguridad de

otros servicios. Si se está aplicando este usuario debido a que hay Jobs que usan la cuenta de servicio recomendamos usar un usuario proxy.

IMPORTANTE: esta operación requiere parada del servicio.

Referencia: https://msdn.microsoft.com/es-es/library/ms143504.aspx

Page 20: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

20

SQL Server Tempdb Información

SQL Server debe alinear el nº de ficheros de tempdb con el nº de procesadores lógicos de que se dispone para mejorar la eficiencia en

operaciones de reserva y liberación de extensiones de objetos temporales. Por nuestra experiencia recomendamos que el nº de ficheros de

tempdb no sobrepasen el valor de 8 como norma general.

El criterio general es el siguiente:

1. Número de ficheros. El número de ficheros de datos se fija de acuerdo al siguiente criterio y aplica a los ficheros de datos no de logs:

o Si tienes menos de 8 cores, el número de ficheros debe ser igual al número de cores. o Si tienes más de 8 cores usa 8 ficheros y si notas contención de memoria añade 4 ficheros más o En casos extremos o emergencias número de cores = número de ficheros

Referencia: Summit SQL Server 2011, ponencia de Bob Ward (Principal Architect Escalation Engineer, Microsoft) http://www.sqlpass.org/summit/2011/Speakers/CallForSpeakers/SessionDetail.aspx?sid=1869

o Considerar el número de CPUs sin hyperthreading ej: Un Dual core cuenta como 2 cores; si tuviera hyperthreading los 2 procesadores lógicos no contarían

Page 21: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

21

Puesto que el número de cores es 4 y el total de ficheros es 7, la configuración actual indica que es incorrecta.

En base al criterio anterior el número de fichero correcto sería 4.

Page 22: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

22

Database Mail

Se ha detectado que se encuentra habilitado SQL Mail. Se recomienda substituir por Database Mail, ya que este último no requiere la

instalación del cliente MAPI extendido en el servidor.

Referencia: http://msdn.microsoft.com/en-us/library/ms175951.aspx

Database Mail es la solución para el envío de mensajes de correo electrónico del motor de base de datos de SQL Server, utiliza el estándar SMTP para enviar correo, se puede usar sin necesidad de tener instalado un cliente MAPI, para más información:

Referencia: http://msdn.microsoft.com/en-us/library/ms175887.aspx

Perfil Cuenta

SolidQ-AX ITSolidQ

MSDB

Histórico de Jobs

Histórico de días de jobs

853

Como se puede ver se están acumulando casi 3 años de histórico de Jobs, aconsejamos poner un job que deje tan solo la información relativa

al último año.

Page 23: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

23

Páginas sospechosas

No se ha encontrado ninguna página sospechosa de estar corruptas en los procesos de verificación de base de datos.

Collations

En SQL Server cada instancia, Base de datos, tabla y campo tiene su propia propiedad collation. La propiedad de collation define como la

base de datos almacena y opera con caracteres y datos Unicode. En esta sección compararemos las collations de 2 maneras distintas. La

primera será comparando el collation de la instancia de SQL con el de las diferentes bases de datos, mientras que el segundo comparará el

collation de cada campo de una base de datos con el collation de la misma base de datos que lo contiene. Para poder comparar y ordenar

caracteres y datos Unicode más eficientemente debemos establecer la misma collation para todo dentro de una misma instancia.

Ahora vamos a ver un ejemplo para demostrar cuanto puede variar un resultado por las collations. Declaramos

2 tablas con un único campo y “case insensitive”:

declare @t1 as table(field1 nvarchar(10) collate Modern_Spanish_CI_AS)

declare @t2 as table(field1 nvarchar(10) collate Modern_Spanish_CI_AS)

Insertamos el valor ‘a’ dentro de la primera table y los valores ‘a’ y ‘A’ en la segunda.

insert into @t1 values('a')

insert into @t2 values('a'),('A')

Si ejecutamos la siguiente consulta

select * from @t1 t1 inner join @t2 t2 on t1.field1 = t2.field1

El resultado es el siguiente:

Page 24: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

24

Cuando comparamos (on t1.field1 = t2.field1) en la consulta anterior, la comparacion es “Case insensitive”

lo que significa que no importan mayusculas ni minusculas, por eso ‘a’ y ‘A’ casan con la comparación. Sin

embargo, si forzamos a la consulta a comparar cambiando la collation a “Case Sensitive” ‘a’ y ‘A’ no casaran.

Vamos a ver el ejemplo forzando a cambiar de collation y el resultado obtenido.

select * from @t1 t1 inner join @t2 t2 on t1.field1 collate Modern_Spanish_CS_AS= t2.field1

La instancia de SQL Server tiene la siguiente collation: SQL_Latin1_General_CP1_CI_AS

Tempdb tiene la collation: SQL_Latin1_General_CP1_CI_AS

A continuación, se muestra una tabla con las bases de datos que tienen un collation diferente a la instancia de SQL Server:

Nombre de tabla Nombre del Collation

ReportServer Latin1_General_CI_AS_KS_WS

ReportServerTempDB Latin1_General_CI_AS_KS_WS

SharePoint_Config Latin1_General_CI_AS_KS_WS

SharePoint_AdminContent_dx31dfdd1121f10 Latin1_General_CI_AS_KS_WS

WSS_Content Latin1_General_CI_AS_KS_WS

Page 25: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

25

Secure_Store_Service_DB_ dx31dfdd1121f10 Latin1_General_CI_AS_KS_WS

StateService_ dx31dfdd1121f10 Latin1_General_CI_AS_KS_WS

AppMng_Service_DB_ dx31dfdd1121f10 Latin1_General_CI_AS_KS_WS

WSS_Logging Latin1_General_CI_AS_KS_WS

Bdc_Service_DB_ dx31dfdd1121f10 Latin1_General_CI_AS_KS_WS

Puesto que estas bases de datos son de SharePoint y este producto utiliza el collation específico Latin1_General_CI_AS_KS_WS podemos

afirmar que se trata de falsos positivos.

Comparación de collations entre los distintos campos en cada tabla de una misma BBDD:

SharePoint_AdminContent_ dx31dfdd1121f10 Latin1_General_CI_AS_KS_WS

NameValuePair_Hebrew_CI_AS Value Hebrew_CI_AS

NameValuePair_Hindi_CI_AS Value Hindi_CI_AS

NameValuePair_Hungarian_CI_AS Value Hungarian_CI_AS

NameValuePair_Hungarian_Technical_CI_AS Value Hungarian_Technical_CI_AS

NameValuePair_Icelandic_CI_AS Value Icelandic_CI_AS

NameValuePair_Japanese_CI_AS Value Japanese_CI_AS

NameValuePair_Japanese_Unicode_CI_AS Value Japanese_Unicode_CI_AS

NameValuePair_Korean_Wansung_CI_AS Value Korean_Wansung_CI_AS

NameValuePair_Korean_Wansung_Unicode_CI_AS Value Korean_Wansung_Unicode_CI_AS

NameValuePair_Latin1_General_CI_AS Value Latin1_General_CI_AS

Se puede encontrar la tabla completa con los datos en el libro de Excel "SQL-AX_SqlServer__20160913-0131" En la hoja "Collations

(SharePoint_AdminContent_ dx31dfdd1121f10)".

Page 26: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

26

WSS_Content Latin1_General_CI_AS_KS_WS

NameValuePair_Hebrew_CI_AS Value Hebrew_CI_AS

NameValuePair_Hindi_CI_AS Value Hindi_CI_AS

NameValuePair_Hungarian_CI_AS Value Hungarian_CI_AS

NameValuePair_Hungarian_Technical_CI_AS Value Hungarian_Technical_CI_AS

NameValuePair_Icelandic_CI_AS Value Icelandic_CI_AS

NameValuePair_Japanese_CI_AS Value Japanese_CI_AS

NameValuePair_Japanese_Unicode_CI_AS Value Japanese_Unicode_CI_AS

NameValuePair_Korean_Wansung_CI_AS Value Korean_Wansung_CI_AS

NameValuePair_Korean_Wansung_Unicode_CI_AS Value Korean_Wansung_Unicode_CI_AS

NameValuePair_Latin1_General_CI_AS Value Latin1_General_CI_AS

Se puede encontrar la tabla completa con los datos en el libro de Excel "SQL-AX_SqlServer__20160913-0131" En la hoja "Collations

(WSS_Content)".

Bdc_Service_DB_ dx31dfdd1121f10 Latin1_General_CI_AS_KS_WS

AR_MetadataObject Name SQL_Latin1_General_CP1_CS_AS

AR_MetadataObjectSecurity IdentityName SQL_Latin1_General_CP1_CS_AS

AR_MetadataObjectSecurity DisplayName SQL_Latin1_General_CP1_CS_AS

AR_MetadataObjectSecurity SettingId SQL_Latin1_General_CP1_CS_AS

AR_Property Name SQL_Latin1_General_CP1_CS_AS

AR_Property SettingId SQL_Latin1_General_CP1_CS_AS

AR_Class Namespace SQL_Latin1_General_CP1_CS_AS

AR_SystemData Name SQL_Latin1_General_CP1_CS_AS

AR_Method LobName SQL_Latin1_General_CP1_CS_AS

Page 27: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

27

AR_FilterDescriptor FilterField SQL_Latin1_General_CP1_CS_AS

Se puede encontrar la tabla completa con los datos en el libro de Excel "SQL-AX_SqlServer__20160913-0131" En la hoja "Collations

(Bdc_Service_DB_ dx31dfdd1121f10)".

Estos ejemplos de collations de columnas distintos en dentro de una base de datos de SharePoint también son falsos positivos ya que es

algo habitual.

Información sobre el sistema operativo

Ficheros de base de datos: Espacio utilizado

La tabla siguiente muestra el espacio usado actualmente por cada fichero de las bases de datos.

Base de

datos

Fichero de

BBDD

Ruta a fichero Unidad Espacio

reservado

Espacio

usado

% espacio

usado

Desc

tipo

master master C:\Obfuscated

Path\master.mdf

C:\ 4 3,44 85,94 ROWS

master mastlog C:\Obfuscated

Path\mastlog.ldf

C:\ 1 0,64 64,32 LOG

tempdb tempdev I:\Obfuscated

Path\tempdb.mdf

I:\ 2.048 8,69 0,42 ROWS

tempdb templog I:\Obfuscated

Path\templog.ldf

I:\ 2.048 1.094,86 53,46 LOG

tempdb tempdev1 I:\Obfuscated

Path\tempdev1.ndf

I:\ 2.048 5,81 0,28 ROWS

tempdb tempdev2 I:\Obfuscated

Path\tempdev2.ndf

I:\ 2.048 6,13 0,3 ROWS

Page 28: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

28

tempdb tempdev3 I:\Obfuscated

Path\tempdev3.ndf

I:\ 2.048 6,44 0,31 ROWS

tempdb tempdev5 I:\Obfuscated

Path\tempdev5.ndf

I:\ 2.048 5,69 0,28 ROWS

tempdb tempdev6 I:\Obfuscated

Path\tempdev6.ndf

I:\ 2.048 5,88 0,29 ROWS

tempdb tempdev7 I:\Obfuscated

Path\tempdev7.ndf

I:\ 2.048 6,25 0,31 ROWS

Se puede encontrar la tabla completa con los datos en el libro de Excel "SQL-AX_SqlServer__20160913-0131" En la hoja "Database Spaced

used Block".

Page 29: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

29

Espacio por objetos de base de datos

La siguiente tabla muestra el espacio utilizado por los distintos objetos que posee cada base de datos:

Base de

datos

Esqu

ema

Nombre de

tabla

Desc

tipo

Tam

año

med

io

de

fila

Nu

m

de

fila

s

Reser

vado

(Kb)

Dat

os

(Kb

)

Da

tos

in

ro

w

(K

b)

Da

tos

sin

us

ar

(K

b)

Es

agru

pado

?

Está

partici

onado?

Está

compri

mido?

Fecha

de

creaci

ón

LOB

(Kb

)

Row

over

flow

(Kb)

[Report

Server]

dbo Catalog USER_

TABLE

304.

670

1.9

50

582.7

84

580.

184

1.1

68

1.3

20

1 0 0 21/12

/2013

579.

320

0

[Report

Server]

dbo Segment USER_

TABLE

7.71

9

13.

49

4

102.7

44

101.

728

29

6

46

4

1 0 0 21/12

/2013

31.4

80

0

[Report

Server]

dbo ExecutionLo

gStorage

USER_

TABLE

3.92

6

41

1

2.752 1.57

6

16 1.1

28

1 0 0 21/12

/2013

1.12

0

0

[Report

Server]

dbo ChunkSegme

ntMapping

USER_

TABLE

58 13.

49

4

2.264 768 1.2

40

20

8

1 0 0 21/12

/2013

0 0

[Report

Server]

dbo DataSource USER_

TABLE

246 2.0

62

800 496 16

0

96 1 0 0 21/12

/2013

0 0

[Report

Server]

dbo SegmentedC

hunk

USER_

TABLE

111 2.4

32

800 264 35

2

13

6

1 0 0 21/12

/2013

0 0

[Report

Server]

dbo SnapshotDat

a

USER_

TABLE

68 1.9

06

216 128 56 0 1 0 0 21/12

/2013

0 0

Page 30: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

30

[Report

Server]

dbo SecData USER_

TABLE

19.1

14

3 80 56 8 0 1 0 0 21/12

/2013

48 0

[Report

Server]

dbo Keys USER_

TABLE

12.2

88

2 32 24 0 0 1 0 0 21/12

/2013

16 0

[Report

Server]

dbo DBUpgrade

History

USER_

TABLE

182 45 16 8 0 0 1 0 0 21/12

/2013

0 0

Se puede encontrar la tabla completa con los datos en el libro de Excel "SQL-AX_SqlServer__20160913-0131" En la hoja "Database Object

Space used block".

Page 31: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

31

Información de Backups

Base de datos Tipo de copia de seguridad Ultima fecha de copia de seguridad Dias desde última copia de seguridad Ultimo fichero de copia de seguridad

AppMng_Service_DB_ dx31dfdd1121f10 Database 12/09/2016 1 K:\Obfuscated Path\ Backup\Full\AppMng_Service_backup_2016_09_12_220001_8545993.bak

Bdc_Service_DB_ dx31dfdd1121f10 Database 12/09/2016 1 K:\Obfuscated Path\Backup\Full\Bdc_Service_DB _backup_2016_09_12_220001_8702214.bak

DAX_PROD Database 12/09/2016 1 K:\ Obfuscated Path \Backup\Full\AX_PROD_backup_2016_09_12_220001_7921002.bak

DAX_PROD_Baseline Database 12/09/2016 1 K:\ Obfuscated Path \Backup\Full\DAX_PROD_Baseline_backup_2016_09_12_220001_8080372.bak

DAX_PROD_model Database 12/09/2016 1 K:\ Obfuscated Path \Backup\Full\DAX_PROD_model_backup_2016_09_12_220001_8080372.bak

ReportServer Database 12/09/2016 1 K:\ Obfuscated Path \Backup\Full\ReportServer_backup_2016_09_12_220001_7764724.bak

ReportServerTempDB Database 12/09/2016 1 K:\ Obfuscated Path \Backup\Full\ReportServerTempDB\ReportServerTempDB_backup_2016_09_12_220001_7921002.bak

Secure_Store_Service_DB_ dx31dfdd1121f10 Database 12/09/2016 1 K:\ Obfuscated Path \Backup\Full\Secure_Store_Service_DB_backup_2016_09_12_220001_8389755.bak

SharePoint_AdminContent_ dx31dfdd1121f10 Database 12/09/2016 1 K:\ Obfuscated Path \Backup\Full\SharePoint_AdminContent_backup_2016_09_12_220001_8233506.bak

Se puede encontrar la tabla completa con los datos en el libro de Excel "SQL-AX_SqlServer__20160913-0131" En la hoja "Información de

backups".

Al dia con backups

AppMng_Service_DB_ dx31dfdd1121f10

AX_SolidQ_View

Bdc_Service_DB_ dx31dfdd1121f10

Page 32: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

32

DAX_PROD

DAX_PROD_Baseline

DAX_PROD_model

ReportServer

ReportServerTempDB

Secure_Store_Service_DB_ dx31dfdd1121f10

SharePoint_AdminContent_ dx31dfdd1121f10

Se puede encontrar la tabla completa con los datos en el libro de Excel "SQL-AX_SqlServer__20160913-0131" En la hoja "Actualizado con

los Backups".

Análisis de eficiencia de los Backups diferenciales

Los backups diferenciales ayudan a las estrategias desde 2 ángulos distintos:

En algunos escenarios se requieren menos transacciones de log para restaurar: Restaurando una base de datos, aplicando restauración

por backup diferencial, se evita la necesidad de restaurar el log de transacciones durante el proceso.

Los Backups diferenciales reducen el tiempo necesario de realizar backups: A veces no vale la pena ejecutar un backup completo porque

no hay tanta información cambiante desde el último backup que se realizó y es más eficiente ejecutar un backup diferencial.

En esta sección recomendaremos que tipo de backup es más apropiado para cada base de datos. La siguiente tabla mostrara el porcentaje

de extents que han cambiado de cada base de datos y en consecuencia el tipo de backup que sea más conveniente. Toda la información

acerca de los extents cambiantes ha sido obtenida de las páginas de SQL Server. Existen diferentes tipos de páginas, y una de ellas es la

DCM o Differential changed map. Esta página contiene información acerca de los extents que han cambiado desde el último BACKUP

DATABASE ejecutado. Con toda esta información somos capaces de calcular los porcentajes y decidir que sería mejor hacer en cada caso.

Database Extensiones

(total)

Extensiones(cambios) %

cambios

Backup

recomendado

Page 33: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

33

AppMng_Service_DB_dx31dfdd1121f10 65 16 24.62 DIFFERENTIAL

AX_SolidQ_View 64 12 18.75 DIFFERENTIAL

Bdc_Service_DB_ dx31dfdd1121f10 65 28 43.08 FULL

DAX_PROD 105649 26500 25.08 DIFFERENTIAL

DAX_PROD_Baseline 16384 36 0.22 DIFFERENTIAL

DAX_PROD_model 122571 30688 25.04 DIFFERENTIAL

ReportServer 12049 1294 10.74 DIFFERENTIAL

ReportServerTempDB 673 37 5.50 DIFFERENTIAL

Secure_Store_Service_DB_ dx31dfdd1121f10 65 22 33.85 FULL

SharePoint_AdminContent_

dx31dfdd1121f10

6785 3383 49.86 FULL

Se puede encontrar la tabla completa con los datos en el libro de Excel "SQL-AX_SqlServer__20160913-0131" En la hoja "Change Data".

El gráfico se puede encontrar en: SQL-AX_SqlServer__20160913-0131 , en la hoja Change Data

Databases Configuration

Estadísticas

No se ha identificado ninguna tarea de recalculo de estadísticas. Recomendamos su creación para que se mantengan actualizadas.

Page 34: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

34

Sección de visor de eventos

En el log de errores de SQL Server vemos que se repite el siguiente error:

Page 35: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

35

Según nos indica Microsoft se debe a un error en la ejecución del procedimiento sys.fn_xe_file_target_read_file.

Referencia: https://support.microsoft.com/en-us/kb/2878139

La solución a aplicar es el CU6 que salió después del Service Pack 1, que curiosamente es el último que está instalado. Puesto que han salido

varios services packs más y cumulate updates recomendamos aplicar el último SP y CU. Ver punto versión de SQL Server.

Page 36: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

36

Patrones de consulta en la instancia SQLAX-SERVER12

Los siguientes planes de consulta son los planes de consulta más intensivos en recursos que SQL server ha detectado desde 08 Aug 2016

23:57:13:717 (Último inicio de SQL Server).

Planes de consulta con mayor coste CPU

Los siguientes planes de ejecución, son los que mayor coste en CPU han supuesto para SQL server:

Se puede encontrar la tabla completa con los datos en el libro de Excel "SQL-AX_QueryPatterns__20160913-0131" En la hoja "Intensive

CPU Table".

Planes de consulta con mayor número de ejecuciones

Los siguientes planes de ejecución, son los que mayor nº de ejecuciones han supuesto para SQL server:

Page 37: SQL Server Health Check Lite Análisis para AX-SQLServer€¦ · SQL Server Health Check Lite. Análisis para AX-SQLServer. SolidQ . ... Actualizar la versión de SQL Server 2012

solidq.com

37

Se puede encontrar la tabla completa con los datos en el libro de Excel "SQL-AX_QueryPatterns__20160913-0131" En la hoja "Number of

executions Table".

Planes de consulta con mayor número carga en lectura-escritura

Los siguientes planes de ejecución, son los que han supuesto mayor carga para el sistema E/S del servidor:

Se puede encontrar la tabla completa con los datos en el libro de Excel "SQL-AX_QueryPatterns__20160913-0131" En la hoja "Intensive

Reads and Writes Table".