1 0
post icon

Generar un rango de filas para usar como producto cartesiano o como conjuto de datos en SQL Server

Otra de las tantas interrogantes que todo programador de SQL suele hacerse, es como generar filas dinámicamente sin leer datos de tablas, para cruzarlo con otras tablas o vistas y así obtener un producto cartesiano o un conjunto de resultados para unirlos con otros conjuntos. La típica solución suele ser usar un bucle como un while o un cursor, para insertar datos en alguna variable tipo tabla o una tabla temporal los cuales presentan serios problemas de rendimiento. De hecho, haremos unas pruebas con un millón de filas creadas en discos distintos, el primer (Continuar Leyendo sobre Generar un rango de filas para usar como producto cartesiano o como conjuto de datos en SQL Server)

post icon

Concatenar filas en una sola fila con valores separados por comas con SQL

Constantemente me topo con personas del ambiente laboral o de foros que me preguntan como pueden pasar las filas que les retorna un select a una sola columna y fila separando los valores por comas, por eso hoy publico este post.

Para lograr esto existen muchas vías, unas más optimas o complejas que otras. No voy a exponer cada una de esas técnicas, pero si veremos una de las maneras más sencillas y eficientes hacerlo. (Continuar Leyendo sobre Concatenar filas en una sola fila con valores separados por comas con SQL)

post icon

Validar Certificado SSL con VB.Net y C#.Net

Cuando necesitamos consumir Web Services o respuestas HTTPS de sitios que están cifrados con un certificado SSL, ya sea verificado o no, tenemos que poder aceptar dicho certificado en el programa cliente para realizar la conexión.

Si no hacemos la aceptación de dicho certificado nos toparemos con el siguiente mensaje de error:

Se ha terminado la conexión: No se puede establecer una relación de confianza para el canal seguro SSL/TLS.

Para implementar en el tipo de cliente que sea que estemos creando debemos agregar un método que nos retorne el OK o aceptación del SSL (Continuar Leyendo sobre Validar Certificado SSL con VB.Net y C#.Net)

post icon

Pasar filas a columnas con Pivot en SQL Server

Hace tiempo ya que tenía pendiente escribir sobre la función para crear Pivots en SQL Server, y que sirve en otros motores que también comparten la sintaxis.

El plan es desarrollar varios temas que tienen que ver con el Pivot, Unpivot, estáticos y dinámicos, pero en esta primer entrega veremos el Pivot estático.

Lo que hace el pivot es agrupar los datos que están en filas y los pasa a columnas, y para ello debemos conocer los posibles resultados que pueden retornar estas filas. (Continuar Leyendo sobre Pasar filas a columnas con Pivot en SQL Server)

post icon

Ejecutar varias versiones del framework en ASP.Net [IIS 6]

Tiempo atrás les mostraba como ejecutar varias versiones del framework en ASP.Net con IIS 7, esto mismo podemos necesitar hacerlo con una versión anterior de IIS, especificamente en la 6.X

El proceso es bastante parecido, pero con un poco de diferencia a la hora de cambiar la versión de cada aplicación.

Una vez que instalen el framework en en servidor, es cuestión de registrarlo en IIS, de la misma manera que en otras versiones (Continuar Leyendo sobre Ejecutar varias versiones del framework en ASP.Net [IIS 6])

post icon

Importar archivos CSV con C# y SqlBulkCopy

Unos meses atrás vimos como Importar datos de un fichero CSV en SQL Server y ahora lo veremos como hacerlo desde una aplicación cliente. Principalmente nos servirá si pretendemos que el usuario no tenga acceso a rutas que pueda acceder directamente el servidor, ya sean locales o remotas.

Existen varias maneras de procesar este tipo de archivos, pero lo mejor es utilizar la clase SqlBulkCopy que ofrece el framework de .net a partir de la versión 2.0, por su velocidad y bajo consumo de recursos. (Continuar Leyendo sobre Importar archivos CSV con C# y SqlBulkCopy)

post icon

Funciones útiles con fechas y horas en SQL Server

Crear un sólo post por cada función útil que podemos tener sobre tipos de datos datetime, date, time, y otros semejantes en SQL Server terminaría en un sin fin de artículos, así que he considerado agrupar varias funciones comunes y casi cotidianas para operar con éstos tipos de datos.

Hay que tener en cuenta que pondré funciones que podrían sólo funcionar desde la versión 2008 en adelante, aunque la mayoría lo hará con versiones anteriores. (Continuar Leyendo sobre Funciones útiles con fechas y horas en SQL Server)

post icon

Parameters.Add vs Parameters.AddWithValue

Pareciera trivial usar uno u otro método para enviar parámetros desde .Net a las bases de datos, pero no lo es. Uno utiliza un método implícito (Parameters.AddWithValue) de conversión de datos y otro explicito (Parameters.Add)

Utilizar el método implícito es más sencillo pero puede acarrear varios problemas y a muchas veces no son fáciles de detectar:

Cuellos de botellas

Cuando escribía el post sobre las diferencias entre NVARCHAR y VARCHA de SQL Server hacía mención sobre el rendimiento que pueden tener  los tipos de datos y el envío de parámetros sin tipificarlos (Continuar Leyendo sobre Parameters.Add vs Parameters.AddWithValue)

post icon

Ejecutar UDL de 32 bits en Windows de 64 bits

Muchas aplicaciones, especialmente las antiguas utilizan conexiones ODBC con archivos .UDL y éstas normalmente tienen soporte para ambas arquitecturas, tanto de 32 como 64 bits y es cuestión de descargar e instalar la que corresponde con el sistema operativo.

Pero no siempre es así, existen muchos drivers ODBC que solo tienen soporte para la versión de 32 bits, ¿qué sucede en esos casos? La instalación del driver de 32 bits en un Windows de 64 bits (Continuar Leyendo sobre Ejecutar UDL de 32 bits en Windows de 64 bits)

19 Marzo 2013
post icon

[TSQL] NVARCHAR vs VARCHAR

Esta es una pregunta muy común entre los que comienzan a utilizar el motor de Microsoft, y no por ello trivial. A muchos le parece trivial, pero en base de datos medianas y grandes puede tener un impacto fuertemente negativo si no se lo utiliza correctamente.

Lo común entre ambos es que son de longitud variable, definidas siempre por un tope máximo. (Continuar Leyendo sobre [TSQL] NVARCHAR vs VARCHAR)