Fran Otero

Programación C#, ASP.NET,SqlServer, Mobile y electrónica.

Ver por etiquetas

Todas las etiquetas » sqlserver (RSS)
Change Data Capture. Histórico de cambios en SQL Server 2008 R2
SQL Server posee un mecanismo propio de traza de cambios DML y DDL que permite consultar versiones anteriores de una misma tabla, ver las modificaciones que ha sufrido durante un determinado espacio de tiempo, o un amplio espectro de modificaciones DDL de la propia tabla. Para ello no es necesario crear ningún mecanismo externo, ni implementar complejas soluciones basadas en triggers: basta con habilitar CDC: Change Data Capture . Habilitar CDC en la base de datos Habilitar CDC para la tabla...
Posted: 25/4/2011 21:30 por Fran Otero Otero | con 4 comment(s)
Archivado en:
Autonumérico entre varias tablas
Tenemos dos tablas de datos en SQL Server en las cuales se van a insertar filas indiscriminadamente. Necesitamos saber en qué orden fueron insertadas estas filas, poder sacar un UNION entre ambas tablas y ordenarla por su inserción. Es necesario además detectar 'huecos' en las filas, es decir, queremos crear un autonumérico pero que implique a ambas tablas. Cómo sabemos, si utlizamos un campo integer la numeración es independiente en cada una de las...
Posted: 31/3/2011 21:00 por Fran Otero Otero | con 3 comment(s)
Archivado en:
Conversiones implícitas en SQL Server
Una de las novedades que Sql Server 2008 trajo en su día fue la capacidad de poder pasar listas de valores a una instrucción Insert Into sin tener que unirlos en una tabla mediante UNION. El siguiente código es totalmente correcto: create table #pruebas ( idCargo varchar ( 50 ), nombre varchar ( 50 )); insert into #pruebas values ( 0 , 'Persona_1' ), ( '1' , 'Persona_2' ), ( '' , 'Persona_3' ); Fíjate que estamos insertando en una...
Posted: 25/10/2010 23:46 por Fran Otero Otero | con no comments
Archivado en:
Intercambio de passwords en ASP.NET
A veces para depurar nuestra aplicación necesitamos entrar "como si fuésemos" otro usuario. Si utilizamos la seguridad de formularios de ASP.NET la información de usuarios se guardará normalmente en una base de datos de SQLServer. Por seguridad la contraseña de los usuarios no se guarda en la BBDD, sino que se guarda un hash que nos sirve para saber si el usuario ha metido la contraseña correcta. La forma menos intrusiva y más sencilla que...
¿Por qué cambiar IsNull por Coalesce?
IsNull es la función de Sql Server que la mayoría de los programadores que llevan unos años escribiendo consultas utilizan. Su función es devolver un valor por defecto si el primer argumento pasado es nulo. Por ejemplo, supongamos que tenemos la siguiente tabla: declare @Clientes as table ( Id int , Nombre varchar ( 100 )); Y queremos actualizar un campo determinado, por ejemplo el Id=2, para que el nombre coincida con un parámetro que nos pasarán desde programa...
Posted: 9/9/2010 21:00 por Fran Otero Otero | con 7 comment(s)
Archivado en:
Common Table Expression simple
Las CTE o Common Table Expression son expresiones que facilitan la labor de escribir consultas complicadas, permitiendo definir subconsultas previas como tablas que se utilizarán en la consulta. Suena complicado, y realmente a veces lo es: las CTE pueden incluso ser recursivas y hacer consultas que ni te imaginabas que se pudiesen conseguir en una sola consulta (queda pendiente para otro post). Pero conocer y saber utilizar CTE básicas nos puede ayudar a mejorar nuestras consultas de...
Posted: 26/8/2010 23:15 por Fran Otero Otero | con 2 comment(s)
Archivado en:
Candlestick para traders con SqlServer
Creo que el título no puede ser más descriptivo: un artículo publicado esta semana en ScribD en el que comento algunas técnicas útiles para análisis bursátil utilizando consultas de Sql Server. Únicamente con consultas de Sql Server conseguimos detectar patrones de velas japonesas que indican comienzos o finales de tendencias, proporcionando un apoyo a la decisión de inversión. Publico en la zona de medios la base de datos real...
Posted: 19/8/2010 22:44 por Fran Otero Otero | con 2 comment(s)
Archivado en:
Fila a fila sin cursores II: SELECT simple
Para los que les haya gustado mi anterior artículo en el cual substituiamos el uso de cursores por un bucle While, aquí está la continuación DEFINITIVA. Supongo que muchos pensareis que no ganamos mucho substituyendo una iteración por la otra, y en parte tenéis razón. No obstante la no utilización de cursores tiene beneficios intrínsecos que van más allá del propio rendimiento de la consulta, como podría ser la seguridad...
Posted: 16/12/2009 23:15 por Fran Otero Otero | con 1 comment(s)
Archivado en:
Fila a fila sin cursores: columna agregado
Tenemos una tabla en nuestra base de datos llamada “Movimientos”, que registra entradas y salidas de material de nuestro almacén. La siguiente consulta es el resultado de consultar los movimientos de “tornillos” en el mes de enero. Cómo se puede ver la tabla carece de un autonumérico, los registros no tienen porqué estar en orden cronológico y hay más productos mezclados. tornillos 500 01/01/2009 tornillos -50 02/01/2009 tornillos...
Posted: 4/12/2009 0:39 por Fran Otero Otero | con 3 comment(s)
Archivado en:
Puesta a cero de la base de datos en pre-producción
Tenemos nuestro nuevo proyecto preparado para el despliegue. Subimos nuestro sitio web al servidor de producción, ejecutamos el script de creación de la base de datos, configuramos la aplicación y vamos a probar y ..... no funciona grrrr#**&*!!!! ¡A cuántos nos sonará este tema! Lo cierto es que es posible ( e incluso probable) que con el cambio de entorno tengamos que hacer unos cuantos retoques en nuestra aplicación, realizar unas cuantas pruebas...
Posted: 7/2/2009 16:53 por Fran Otero Otero | con 3 comment(s)
Archivado en:
Copias masivas a base de datos en 0,
La clase SqlBulkCopy, introducida como novedad en el Framework 2.0, resulta de gran utilidad para realizar inserciones de datos masivas. En pruebas realizadas de inserciones desde tablas en memoria a SqlServer 2005 con más de 10.000 registros el rendimiento es espectacular: pasa de tardar algo más de 12 segundos con un comando de inserción sqlcommand a menos de medio segundo con SqlBulkCopy. Por supuesto cuantos más datos incluya la inserción mayor es la diferencia...
Posted: 31/1/2009 0:52 por Fran Otero Otero | con no comments
Archivado en: