lunes, 9 de mayo de 2011

Limpiar el LOG en SQL Server sin guardarlo

En versiones anteriores de SQL Server se contaba con el estatuto TRUNCATE_ONLY para limpiar el LOG sin guardarlo, sin embargo esta función fue deprecada en versiones nuevas de SQL Server. Por lo tanto si deseamos “limpiar ” LOG de SQL Server y no nos interesa su contenido podemos ejecutar los siguientes comandos:

 

-- Hacer backup sin guardarlo en archivo

BACKUP LOG [nombreBD] TO DISK='NULL'

- - Reducir el tamaño de los archivos de log


dbcc shrinkfile ('TLOGFILENAME', tamano) – donde tamano es la cantidad de MB que deseamos que quede el archivo

Eduardo Castro Martínez

http://ecastrom.blogspot.com

http://comunidadwindows.org

http://tiny.cc/comwindows

viernes, 6 de mayo de 2011

Sync Framework, SQL Server y SQL Azure

Les comparto la presentación del Webcast MSDN que impartí sobre Sync Framework y SQL Server http://slidesha.re/ieHjpU

 

image

 

Saludos,

Eduardo Castro Martinez

http://comunidadwindows.org

http://ecastrom.blogspot.com

Cluster de SQL Server con el Microsoft iSCSI Software Target

Microsoft ha liberado de forma gratuita el Microsoft iSCSI Software Target , de esta forma ahora ahora se pueden realizar escenarios de clúster de SQL Server sin necesidad de contar con una SAN, el software lo pueden descargar desde esta dirección http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=45105d7f-8c6c-4666-a305-c8189062a0d0 este blog post http://blogs.technet.com/b/josebda/archive/2009/01/31/step-by-step-using-the-microsoft-iscsi-software-target-with-hyper-v-standalone-full-vhd.aspx muestra cómo configurar un ambiente con Hyperv.

 

Saludos,

 

Eduardo Castro Martinez

http://comunidadwindows.org

http://ecastrom.blogspot.com

miércoles, 27 de abril de 2011

Optimización de Ad Hoc Queries en SQL Server

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

viernes, 15 de abril de 2011

Habilitar DAC (Dedicated Administrative Connection) en SQL Server Express

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