April 2011


A partir de SQL Server 2008 existe una opción llamada optimize for ad hoc workloads (http://msdn.microsoft.com/en-us/library/cc645587.aspx) esta opción permite optimizar el uso de memoria para el almacenamiento de caché de planes de ejecución, en resumen el caso es el siguiente: cada vez que ejecutamos un T-SQL en SQL Server se crea un plan de ejecución que se almacena para su posible reutilización, sin embargo existen muchos planes de ejecución que será utilizados una única vez, por lo tanto almacenar ese plan de ejecución utiliza memoria para un plan que no se va a volver a utilizar. La opción ‘optimize for ad hoc workloads’ configura SQL Server para que solo aquellos planes de ejecución que se utilizan más de una vez sean almacenados en caché.

Para activar  dicha opción se debe ejecutar el siguiente T-SQL

 

sp_CONFIGURE 'show advanced options',1
RECONFIGURE
GO

sp_CONFIGURE ‘optimize for ad hoc workloads’,1
RECONFIGURE
GO

 

Para probar este comportamiento utilizamos el siguiente script

 

DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
GO

USE AdventureWorks2008R2
GO

/* Ejecutar un TSQL Ad Hoc */
SELECT * FROM Person.Address
GO

/* El siguiente TSQL verifica si el plan esta en cache */
SELECT usecounts, cacheobjtype, objtype, TEXT
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
WHERE
TEXT LIKE ‘%SELECT * FROM Person.Address%’

GO

El resultado default de SQL Server es el siguiente

 

image

 

Podemos ver en el resultado anterior que el plan aunque fue ejecutado una vez, ya está en caché. Ahora configuremos optimize for ad hoc workloads en SQL Server.

image

 

Ahora ejecutemos nuevamente el TSQL anterior y vemos que ahora se muestra un Compiled Sub Plan y no muestra el plan compilado en cache

 

image

 

Si ejecutamos el TSQL más de una vez, el plan completo quedará en caché, tal y como se muestra a continuación

 

image

 

 

Saludos,

 

Eduardo Castro Martinez

http://ecastrom.blogspot.com

http://comunidadwindows.org

twitter: edocastro

Ya pueden ver por demanda el video del WebCast sobre Failover Clustering con SQL Server en la página seleccionan la opción “Ver en línea”

 

image

https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=es-AR&EventID=1032482581&CountryCode=AR

 

Saludos,

 

Ing Eduardo Castro Martinez

http://ecastrom.blogspot.com

http://comunidadwindows.org

Les comparto la presentación utilizada en el WebCast sobre Failover Clustering con SQL Server.

 

image

http://slidesha.re/hg9yhe

 

Saludos,

 

Ing Eduardo Castro Martinez

http://ecastrom.blogspot.com

http://comunidadwindows.org

El DAC está deshabilitado en SQL Server Express por default, para habilitarlo se tiene que agregar un parámetro más en el inicio del servicio, los pasos son los siguientes:

 

1) Ingrese a Panel de Control Servicios

2) Detenga el Servicio SQL Server Express

3) Ingrese al SQL Server Configuration Manager

image

 

4) Agregue el parámetro "-T7806" dentro de los parámetros de inicio

 

image

5) Inicie el Servicio de SQL Server Express

Ahora puede utilizar el DAC de SQL Server Express

C:>SQLCMD -E -S.\SQLEXPRESS –A

Si se presenta el siguiente error:

 

HResult 0xFFFFFFFF, Level 16, State 1
SQL Server Network Interfaces: An error occurred while obtaining the dedicated a
dministrator connection (DAC) port. Make sure that SQL Browser is running, or ch
eck the error log for the port number [xFFFFFFFF].
Sqlcmd: Error: Microsoft SQL Server Native Client 10.0 : A network-related or in
stance-specific error has occurred while establishing a connection to SQL Server
. Server is not found or not accessible. Check if instance name is correct and i
f SQL Server is configured to allow remote connections. For more information see
SQL Server Books Online..
Sqlcmd: Error: Microsoft SQL Server Native Client 10.0 : Login timeout expired.

Verifique el puerto en el cual esta escuchando el DAC, esto lo puede hacer ingresando al Event Viewer

image

También si desea, temporalmente puede habilitar el SQL Browser.

 

image

 

También puede conectarse utilizando DAC desde el Management Studio

 

image

 

Saludos,

 

Ing. Eduardo Castro Martinez

http://comunidadwindows.org

SQL Server Performance

Alta disponibilidad, recuperación ante desastres, tolerancia a fallos.

Si estas palabras no están en el vocabulario de su departamento de TI, es probable que su organización no esté preparada para hacer frente a los inevitables tiempos de inactividad del servidor.

Asista a este webcast para aprender acerca de Windows Server 2008 R2 failover clustering con SQL Server, una solución de alta disponibilidad de Microsoft. Failover clustering conecta servidores y monitores, la salud de los servidores y aplicaciones que se ejecutan allí.

En el caso de un fallo del servidor, las aplicaciones y bases de datos pueden conmutar por error a otro servidor y continuar funcionando con la mínima interrupción a sus aplicaciones de misión crítica.

Nosotros cubrimos los fundamentos de la conmutación por error en este webcast, y proporcionamos la información para ayudarle a conseguir un clúster de conmutación por error configurado e implementación en cuestión de horas.

Registrese en https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032482580&EventCategory=4&culture=es-AR&CountryCode=AR

 

Saludos,

 

Ing. Eduardo Castro Martinez

http://comunidadwindows.org

Esta serie de blogs incluye T-SQL y DMV que pueden ser utilizadas para detectar problemas de rendimiento de SQL Server y su posible solución.

Otro de los componentes que se pueden revisar para la optimización de SQL Server es el Buffer Pool, que es el componente que almacena y administra el caché de datos de SQL Server. La información detallada sobre el Buffer Pool la podemos obtener mediante la DMV sys.dm_os_buffer_descriptors,  esta DMV devuelve información sobre todas las páginas que están siendo utilizadas por el  Buffer Pool, con base en estos resultados podemos ver la distribución del Buffer Pool de acuerdo al uso que se le está dando, y devuelve el pagetype que puede ser un Data Page, Index Page o un TEXT_MIX_PAGE (más información sobre los tipos páginas disponible en http://msdn.microsoft.com/en-us/library/ms190969.aspx).

 

Si ejecutamos el siguiente estatuto

 

select * from sys.dm_os_buffer_descriptors

 

Se obtiene información de la distribución del Buffer Pool. En este resultado vemos todas las páginas que están siendo utilizadas por el buffer pool, recordemos que cada página de SQL Server es de 8KB, en este caso cada página de datos del caché tiene un descriptor del buffer. Los descriptores del buffer representan de forma única cada página que está actualmente siendo utilizada en caché de una instancia de SQL Server.

 

image

 

Si queremos una vista resumida de esta información podemos ejecutar el siguiente T-SQL.

 

SELECT count(database_id) * 8 / 1024 AS ‘Cache Usado (MB)’ –multiplicamos la cantidad paginas para convertilas en MB
    ,CASE database_id
        WHEN 32767 THEN ‘BD Recursos’
        ELSE db_name(database_id)
        END AS ‘NombreBaseDatos’
FROM sys.dm_os_buffer_descriptors
GROUP BY db_name(database_id) ,database_id

 

Este T-SQL da como resultado la cantidad de caché utilizado por cada base de datos de la instancia actual de SQL Server.

 

image

 

Ing. Eduardo Castro Martínez

http://comunidadwindows.org

http://ecastrom.blogspot.com

 

SQL Server Performance

Les comparto los links para descargar los laboratorios sobre SQL del Entrenamiento para desarrollar en la Nube Parte (WorkShop) tercer día , para descargar los recursos para el laboratorio ingresen al siguiente enlace  http://bit.ly/g8UZFt ahí encontrarán las instrucciones para hacer el laboratorio, la PPT y los scripts de demostración utilizados en el entrenamiento.

 

 

Saludos,

Eduardo Castro

http://ecastrom.blogspot.com

 

SQL Server Performance

Next Page »