Filestream Storage en Alta Disponibilidad

¡Que tal! Primer post del año. A cada uno de ustedes que llega por alguna u otra circunstancia, les deseo un año lleno de felicidad y desafíos nuevos.

Hoy les compartiré un torpedo sobre las posibilidades de alta disponibilidad de Filestream Storage. Para que sepan, no se pueden configurar todas las posibilidades de HA que tiene SQL Server cuando se trabaja con filestream storage.

Las posibilidades son:

  • Mirroring:  NO
  • Log Shipping: SI
  • Failover Cluster: SI *
  • Replication; SI
  • Database Snapshot: NO
  • Avalilability Groups: SI **

*: Los filegroups correspondientes que soportan a filestream, deben estar en un volumen compartido en el cluster.

**: Completamente soportado sin fallas desde el reléase del service pack 1 (mas info: http://dangerousdba.blogspot.com.br/2012/07/filetable-with-alwayson-ags-bug.html )

Más información sobre como trabajar con Filestream y otras características de SQL Server, pueden encontrarla aquí: http://technet.microsoft.com/en-us/library/bb895334.aspx

 

Error converting data type nvarchar to float — FFFFUUUUUUUUU

¡Que taaaaaal! No estaba muerto, ni andaba de parranda. Estaba cambiándome de hosting todos los sitios que tenía. Me fui de GoDaddy a Bluehost. Hasta el momento va todo bien y espero que no falle en la mitad del camino como lo hizo mi antiguo proveedor. Además que salía más barato. En fin. Hay que apretarse el pantalón muchas veces para poder sobrevivir y mas aun en la interné.

Estaba trabajando haciendo una conversion de tipos de datos y recibí un error así al hacer un cast:

Error converting data type nvarchar to float

¡Ups! Estaba completamente seguro que no habían letras en los registros. El problema estaba es que hacía la separacion decimal con «,» y no con «.» .

Asi que ocupé la funcion replace para corregir el panorama:

UPDATE tabla SET campo = replace(campo,',','.')

y asi fue como funcionó. Obviamente hay que hacer unos cast o convert entre medio para que la cosa ande.

¡Chau!

Maximizando la disponibilidad de las aplicaciones de mision critica

Hola Mundo.

El día 14 de Noviembre del presente año, se realizó un evento en el Hotel W (Santiago) para mostrar los nuevos productos de Microsoft justo en un momento de muchos lanzamientos. Recordar que este año se lanzó Windows Server 2012, SQL Server 2012, System Center 2012, Windows 8, una nueva versión de Office 365, entre otras cosas.

Fue un evento al cual asistieron mas de 900 personas. Estuvo muy rico en cuando a contenido. Me invitaron como expositor y toqué el tema de Alta Disponibilidad con SQL Server 2012 aprovechando la tecnología de Always On.

Les dejo las slides del evento.

Error 1478 en SQL Server Mirroring

Este error es bastante recurrente cuando se quiere levantar Database Mirroring. Puede que al momento de configurarlo no se haya presentando ningún warning y ningún error en el proceso, pero si al momento de echar a andar el mecanismo de mirroring aparece este error, es porque no se realizó un paso previo.

Error 1478
Error 1478

Así se ve el error y la solución es re simple. Solo hay que respaldar el log de transacciones de la base de datos primaria y restaurar este respaldo en la base de datos de espejo con la opción de NORECOVERY.
Una vez que esta tarea se ha realizado, ya se puede levantar Mirroring y debiéramos tener problemas.

Usando la funcion dateadd() – Funcion de manejo de fecha y hora en SQL Server

Los motores de bases de datos tienen capacidades para manejar fechas de forma muy precisa. Es por esto que incluyen funciones para trabajar con éstas. Existen muchas funciones, pero en este caso hablaremos sobre dateadd().

La función dateadd() devuelve un valor de fecha, manipulado en uno de los elementos de la fecha. La función tiene 3 parámetros: datepart, el cambio y el elemento donde se va a manipular la fecha.
Los datepart son los componentes de una fecha. Estos son:

  • year
  • quarter
  • month
  • dayofyear
  • day
  • week
  • weekday
  • hour
  • minute
  • second
  • millisecond
  • ms
  • microsecond
  • mcsnanosecond

El numero, debe ser un valor entero. Si es un valor decimal, el decimal se truncará y solo quedará la Porción entera.

Ejemplo:
Agregar un año a la fecha actual:
SELECT DATEADD(year,1,GETDATE())

Juego con los milisegundos, nanosegundos y microsegundos (sacado desde MSDN):

DECLARE @datetime2 datetime2 = '2007-01-01 13:10:10.1111111'
SELECT '1 millisecond' ,DATEADD(millisecond,1,@datetime2)
UNION ALL
SELECT '2 milliseconds', DATEADD(millisecond,2,@datetime2)
UNION ALL
SELECT '1 microsecond', DATEADD(microsecond,1,@datetime2)
UNION ALL
SELECT '2 microseconds', DATEADD(microsecond,2,@datetime2)
UNION ALL
SELECT '49 nanoseconds', DATEADD(nanosecond,49,@datetime2)
UNION ALL
SELECT '50 nanoseconds', DATEADD(nanosecond,50,@datetime2)
UNION ALL
SELECT '150 nanoseconds', DATEADD(nanosecond,150,@datetime2);

Esto se puede usar, por ejemplo, para saber cuántas órdenes de trabajo fueron realizadas por un usuario la semana pasada.
Tiene muchos usos.
Para más información pueden visitar la referencia oficial: http://msdn.microsoft.com/es-es/library/ms186819.aspx
¡Chau!

Atención Chile! Información sobre el Cambio de Hora!

Por disposicion del ex gobierno de Michelle Bachelet, se dispuso el atraso del cambio de horario. Antiguamente esto ocurría el segundo fin de semana de marzo. En el 2010, esto correspondía al día 14 de marzo, pero fue aplazado hasta el dia 3 Abril.
Esto se acordó por los sucesos ocurridos el día 27 de Febrero.

Microsoft ha publicado un sitio web sobre informacion al respecto y otro sobre la actualizacion del sistema.

Sitio web informativo

Sitio web con el parche de actualización

Linux Integration Components – Parte I

En los siguientes 2 articulos que publicare, me dedicare exclusivamente a hablar sobre Linux Integration Components o las herramientas de integracion para Linux. 
Sonara un poco extraño todo esto, pero a mediados del 2009 Microsoft libero 20000 lineas de codigo para el nucleo de Linux (ver noticia). Muchos linuxeros y fanboys de Microsoft se preguntan: Por que?
La respuesta es bien sencilla y se puede resumir en una palabra: Interoperabilidad.
Es una respuesta bien linda y adecuada para el ambiente filosofico, futurista y muy a nivel de CEO’s de empresas gigantes, pero que ocurre en el nivel mas tecnico?
Para entender la respuesta, es bueno explicar como funciona la virtualizacion como Dios manda. Esta explicacion sirve para todos los sistemas de virtualizacion, como: Xen, Hyper-v, VMWare, OpenVZ, entre otros. Para esto, ocupare un mono sacado del sitio de Technet:

En este esquema, reconocemos 6 ambientes claramente identificados:

  • Particion Primaria: Es la particion correspondiente al host fisico. Aqui se almacena toda la informacion de las maquinas virtuales que se albergan y se ejecutan.
  • Particion Secundaria: Particion correspondiente a cada una de las particiones de las maquinas virtuales
  • Modo de Usuario: Es lo que al usuario o administrador del sistema le concierne manejar. Es toda la capa de aplicaciones que estan en el host fisico y en los host virtuales.
  • Modo de Kernel: El nucleo de los hosts, tanto virtuales como fisicos. Aqui esta el VMBus, VSP por el lado del host fisico y el VSC por el lado de los hosts virtuales.
  • Hipervisor de Windows: El que hace el trabajo sucio. Se encarga de la comunicacion entre las maquinas virutales y el hardware del equipo.
  • Hardware: El hardware. Nada mas. (A esta altura de mi vida y del dia no explicare lo que es el hardware. Si alguien tiene una duda puede remitirse a los comentarios, ahi con gusto le contestare).

Antes de continuar, hay que explicar algunos conceptos mencionados que puede que no hayan quedado claro, como el caso de VSP y VSC.
VSP: Virtual Service Provider: Se encarga de que cada uno de las maquinas virtuales tenga sus dispositivos sinteticos tal cual como si fueran reales. En otras palabras, las maquinas virtuales tienen dispositivo de video, de red, entrada, salida, etc gracias al VSP. Este funciona sobre el host fisico.
VSC: Virtual Service Client: Se encarga de comunicarse con el VSP para mostrarle a la maquina virtual que tiene dispositivos sinteticos tal cual como si fueran dispositivos fisicos. Este funciona sobre los hosts virtuales.
VMBus: Es un tubo de ultra rapido que sirve para la comunicacion entre VSP y VSC.
Para que esto del VMBus quede un poco mas claro, dejare un esquema sacado descaradamente del blog de Alejandro Ponicke:

En este mono, la funcion de VMBus esta muy clara, se ve como un tunel de comunicacion.
Humm… y que tiene que ver Linux aqui?
Desde un principio Hyper-V solo contemplaba la virtualizacion de sistemas Windows, por lo que las herramientas de integracion se instalaban automagicamente y los sistemas virtualizados contaban son sus dispositivos sinteticos y funcionaban de maravilla.
Pero ahora, con la liberacion de mas de 20.000 lineas de codigo para el nucleo de Linux, se pueden virtualizar sistemas Linux sin problemas con Hyper-V. Es por esto que existe una herramienta llamada Linux Integration Components (desde ahora en adelante: Linux IC).
Linux IC provee el soporte de dispositivos sinteticos para dispositivos de almacenamiento y dispositivos de red. Ademas, incluye un port de VMBus para que funcione sobre Linux.
Ojo que Microsoft asegura que Linux IC funciona sobre: SUSE Linux Enterprise Server 10 SP2, (x86/x64), SUSE Linux Enterprise Server 11 (x86/x64) and Red Hat Enterprise Linux 5.2/5.3/5.4 (x86/x64).
Pero nadie nos dice que ocurre con las otras distribuciones conocidas, asi que en los proximos articulos trataremos el tema sobre como instalarlo en un sistema Linux.
Los espero para la proxima entrega!