SQL Server Parameter Sniffing: error timeout con DataAdapter.Fill en .NET

SQL Server Parameter Sniffing: error timeout con DataAdapter.Fill en .NET

Si estás invocando un procedimiento almacenado en SQL Server al que le pasas uno o varios parámetros y observas que el tiempo de ejecución es mucho mayor que si ejecutas manualmente la query, probablemente estés ante un caso de Parameter Sniffing. Este tipo de problema sucede cuando el gestor de la BD intenta reutilizar un plan de ejecución anterior recuperándolo de la caché aplicando  los nuevos valores de los parámetros recibidos.

El plan de ejecución de un procedimiento almacenado en SQL Server no se genera al compilarlo, si no que se crea la primera vez que se ejecuta el SP y después se reutiliza en las sucesivas llamadas. Esto puede dar lugar a ejecuciones con una demora de tiempo muy elevada, ya que puede ser que el plan de ejecución de la primera consulta no sea tan óptimo para otras.

La forma de solucionarlo es utilizar variables locales en lugar de los propios parámetros en la query del procedimiento almacenado.  Creamos una nueva variable del mismo tipo y tamaño que cada parámetro, y le asignamos su valor. Por ejemplo:

CREATE PROCEDURE SP_N4GASH

@fecha Date,

@categoria int

AS

DECLARE @nuevaFecha Date

DECLARE @nuevaCategoria int

SET @nuevaFecha =@fecha

SET @nuevaCategoria=@categoria

SELECT […]  FROM […]

WHERE aud_fecha = @nuevaFecha

AND catID = @nuevaCategoria

GO

En mi caso me apareció este error desde una aplicación C# desde la que invocando a un procedimiento almacenado y metiéndolo en un DataTable mediante DataAdaptar.Fill me arrojaba un error de TimeOut. La solución rápida y mala de este error desde la aplicación web es asignar varios segundos al parámetro timeout del SQLCommand, y aunque esto evita que salte el error y se detenga el proceso, no soluciona el problema de la demora de tiempo, donde a veces se presentan diferencias de más de una hora respecto a la solución desde T-SQL.

Sin Comentarios

Flash Builder 4.6 – Error Java Heap Space

Flash Builder 4.6 – Error Java Heap Space

El error Java Heap Space puede aparecer mientras trabajamos con Flash Builder 4.6 al intentar compilar, limpiar o generar un proyecto. Normalmente ocurre cuando el tamaño de la película flash a generar es muy elevado, o cuando el conjunto de ficheros o archivos que utiliza pesan mucho (imágenes, XML, etc).

Para solucionarlo podemos seguir la solución publicada en el FAQ de Adobe, que consiste en ampliar la memoria virtual de Java. Para ello tenemos que seguir los siguientes pasos:

  • Cerramos Flash Builder ó Eclipse en caso de que estemos usando su plugin.
  • Localizamos el fichero flashbuilder.ini ó eclipse.ini y lo editamos.
  • Modificamos los valores XMS y XMX del parámetro –vmargs. Esos valores indican la cantidad de megas (M) ó kilobytes (K) disponibles para la memoria virtual de java. Estos valores deben ser siempre múltiplos de 1024 kb.
    • Xms256m: Memoria inicial disponible. Lo cambiamos por Xms1024m.
    • Xmx512m: Memoria máxima disponible. Lo cambiamos por Xmx2048m.
  • Volvemos a abrir Flash Builder 4.6 ó Eclipse y debería de funcionar correctamente.

La cantidad de memoria que deseemos dedicar dependerá del equipo donde estemos ejecutando la aplicación.

Sin Comentarios

Flash Builder 4.6 “Workspace in use or cannot be created, chose a different one.”

Flash Builder 4.6 'Workspace in use or cannot be created, chose a different one.'

Este error aparece normalmente cuando cerramos incorrectamente el IDE Flash Builder, por ejemplo, cancelando el proceso desde el Administrador de Tareas de Windows o al producirse algún tipo de error. Hay varios métodos para solucionarlo, en mi caso con la versión 4.6 en una ocasión me funcionó la 1ª y en otra la 2ª:

1. Borrar el fichero .lock ubicado en el directorio .Metadata del workspace de Flash Builder 4.6. Es posible que no os deje borrarlo porque estará siendo utilizado por el proceso de FB, por lo que previamente tenéis que cancelar el proceso y luego podréis borrarlo.

Workspace\.metadata\.lock

2. Borrar el fichero .snap ubicado en:

Workspace\ .metadata\.plugins\org.eclipse.core.resources\.snap

3. Editar el fichero de configuración de preferencias de Flash Builder 4.6 y donde pone RECENT WORKSPACE borramos el que nos está dando error.

UsuarioX/Documents/Adobe Flash Builder 4.5/cascaded/308971/configuration/
.settings/org.eclipse.ui.ide.prefs

Sin Comentarios

Weareables ¿tendrá éxito la nueva tendencia tecnológica?

weareable

Seguro que lo has oído en la televisión, la radio, lo has leído en un blog o en algún artículo de divulgación de una revista semanal. Los weareables. Llevan ya tiempo conviviendo con nosotros, aunque estas Navidades seguramente tomen buen impulso y den un salto como el que ya dieron, por ejemplo, las tablets o los smartphones en su día. Las Google Glasses son un ejemplo perfecto de esta nueva tendencia. Si eres adicto al running seguro que en tu equipo diario has incorporado un pulsómetro – ya sea a modo de reloj o una original pulsera -, sin saberlo, ya llevas tiempo con un weareable en tu vestuario. La inminente salida de los Samsung Galaxy Gear el próximo mes y el muy probable contraataque de su competencia, el iWatch, premiten preveer cuál será el regalo tecnológico del año.

Por weareable se entiende cualquier dispositivo electrónico que podemos llevar encima de nuestro cuerpo y que interactúa con nosotros y otros aparatos: relojes smtartwatchs, zapatillas deportivas con GPS incorporado, pulseras que monitorean nuestro estado de salud, etc. Muchos de estos nuevos aparatos están ideados para crear sinergias con los smartphones que ya se han convertido en elementos clave de nuestro día a día. Siguiendo el ejemplo de los pulsómetros, éstos son capaces de sincronizarse en la nube y pasar de forma automática nuestra frecuencia cardiaca, velocidad, ritmo medio, etc. a nuestro smartphone, desde el que podríamos explotar de cientos de formas distintas esta información.

Recientemente se ha anunciado que el smartwatch de Samsung: Galaxy Gear será un dispositivo autónomo capaz de realizar llamadas telefónicas sin estar conectado a un smartphone, es decir, podríamos llevar el teléfono en nuestra muñeca cómodamente ocupando apenas 3 cm cuadrados. Es posible que en este punto podamos plantear un dilema ¿los smartwatchs podrán suplantar a los smartphones? ¿son compatibles u ocupan el mismo rol? ¿sólo los utilizaríamos para realizar llamadas? desde hace tiempo la tendencia son pantallas más grandes, la navegación desde terminales móviles se ha multiplicado exponencialmente y el consumo multimedia está en alza  ¿qué ocurrá con los smartwatchs? ¿navegaremos por internet con ellos? ¿veremos series y películas en una pantalla diminuta? delegado el uso de smartphones ¿surgiría un nuevo producto para el consumo de internet y contenido multimedia que complemente al smartwatch? ¿ya existe: tablets? Llegados a este punto, podríamos decir sin complejos que antes vivíamos pegados a los teléfonos y ahora vivimos pegados a los weareables.

¿Y tú? ¿cuantos weareables tienes ya en tu armario? yo de momento sólo uno, pero es que todavía no ha llegado Diciembre 😉

1

2

Sin Comentarios

Foursquare para empresas (marketing de geo-posicionamiento)

¿No lo conoces aún? ¿seguro? Foursquare es una red social que viene pegando fuerte desde hace meses y que poco a poco se ha ido convirtiendo en una herramienta o plataforma esencial para la promoción de empresas y negocios locales. Enfocado principalmente a la restauración (bares, pubs, restaurantes, tiendas de cupcakes, etc), en realidad puede ser útil para cualquier sector o negocio que se dedica a la venta de productos y/o servicios. A continuación os mostramos una excelente presentación donde se explica qué es Foursquare, qué potencial se le puede sacar como usuario aprovechando el juego de los badges y los check-ins, y quizás lo más importante, cómo explotarlo siendo una empresa: gestión de campañas, fidelización de usuarios mediante badges y alcaldes o Majors, nuevas técnicas o canales de promoción, etc. Para comprobar la eficacia del marketing online en Foursquare, podéis ver estos cinco casos de éxito.

Sin Comentarios

Cómo ejecutar desde línea de comandos Export Release Build de Adobe Flash Builder 4.6

Cómo ejecutar desde línea de comandos Export Release Build de Adobe Flash Builder 4.6

Para automatizar la generación o exportación de un build con Adobe Flash Builder 4.6 o Eclipse + plugin Flash Builder podemos utilizar la herramienta FlashBuilderC.exe que ejecuta un programita ANT para compilar y generar la película flash .swf. Para el proceso de automatización de la opción del Export Release Build es necesario crear dos ficheros, un .bat (o un Shell script si utilizas entorno UNIX, .sh) y un build.xml de Apache ANT (para poder ejecutarlo se necesita tener instalada la Máquina Virtual de Java JVM).

.BAT

“C:Archivos de ProgramaAdobeAdobe Flash Builder 4.6FlashBuilderC.exe”
–launcher.suppressErrors
-noSplash
-application org.eclipse.ant.core.antRunner
-data “C:Mis DocumentosMi Workspace”
-file “C:Mis DocumentosMi Workspacebuildbuild.xml” MI_PROYECTO_FLEX

La primera instrucción ejecuta la herramienta que se encarga de compilar o lanzar desde línea de comandos la acción “Project > Export Release Build” del Flash Builder 4.6. (C:Archivos de ProgramaAdobeAdobe Flash Builder 4.6FlashBuilderC.exe). Del resto de instrucciones sólo nos interesan data, que indica la ruta absoluta del workspace del FB y file, que indica dónde se ubica el programita ANT (el build.xml) y el nombre del Proyecto (MI_PROYECTO_FLEX).

BUILD.XML

<?xml version=”1.0″?>
<project default=”main”>
<target name=”main”>

<fb.exportReleaseBuild
project=”MI_PROYECTO_FLEX
destdir=”C:Mis DocumentosMi Workspaceflashpelicula.swf”/>

</target>
</project>

La etiqueta fb.exportReleaseBuild es la encargada de ejecutar automáticamente la exportación de la película flash. Entre los parámetros que se les puede añadir está PROJECT (que es obligatorio e indica el nombre del proyecto) y DESTDIR (la ruta o directorio de destino donde queremos almacenar la película flash generada). Para más información sobre otros parámetros puedes consultar el repositorio de ayuda de Adobe.

Después, desde una sencilla aplicación JAVA o .NET podemos ejecutar el .BAT para que de forma automática genere las películas en procesos batch o mediante demonios.

Sin Comentarios