FILESTREAM, ¿Qué debemos conocer?

Hoy vamos a comentar que es FILESTREAM, para que vale, los beneficios que nos puede ofrecer, y que componentes lo forman.

Primero, ¿Qué es FILESTREAM?

Es una tecnología diseñada para tratar, dentro de una instancia SQL, ficheros sin perjudicar la instancia.

Esto se realiza con un driver externo, RSFX, que interactuara entre la BD, y un sistema NTFS.

¿Cómo se monta?

Para montar esta tecnología, tendremos 2 pasos a realizar. Primero, activar ese driver, y segundo, permitir a la instancia a comunicarse con este driver.

Activando el driver:

clip_image002

Para habilitar el driver, dentro de SQL Server Configuration Manager, en la pestaña de servicios, elegiremos la instancia donde queremos habilitar esta configuración. Dentro de las propiedades, pestaña FILESTREAM, podemos seleccionar para que queremos tenerlo habilitado, para TSQL, para TSQL y acceso a través de las APIs de Win32, y si queremos que ese driver este activo para recoger conexiones externas. (En un cluster, siempre estará activo para esas conexiones externas)

Si se habilita el acceso a través de las APIs de Win32, generara un share SMB (que, en este caso, no es un FileShare)

Si intentamos acceder a este share, tendremos el siguiente error:

clip_image004

Esto es así, porque debajo del share SMB no hay un sistema de archivos, sino un EndPoint del driver de RSFX.

El siguiente paso, es habilitar la instancia para que pueda comunicarse con el driver. Para ello, dentro de SQL Server Manager Studio, lo habilitaremos:

clip_image006

Una vez reiniciada la instancia, tendremos FILESTREAM listo para usarse.

A partir de aquí, podremos crear un directorio FILESTREAM dentro de una BD, crear una tabla que utilice esta tecnología, y trabajar con ella, utilizando para ello, o TSQL, o llamadas a la API de Win32 para acceder a ella.

Los permisos necesarios son,

Dentro del sistema NTFS, que el usuario que arranca la instancia, tenga acceso al directorio, y permisos de modificación. Se recomienda que nadie más tenga acceso a este directorio, ya que una modificación externa, implicara que se detecte una corrupción de datos.

Para poder modificar estos ficheros, solo necesitaremos que el usuario que lanza esta modificación / creación / borrado, tenga los permisos DML necesarios (update, select, insert o delete)

Tendréis más información en los siguientes links:

WhitePaper de FILESTREAM:

https://msdn.microsoft.com/en-us/library/cc949109.aspx

Como crear una BD con FILESTREAM:

https://msdn.microsoft.com/en-us/library/cc645585.aspx

Como crear una Tabla con FILESTREAM:

https://msdn.microsoft.com/en-us/library/cc645583.aspx

Uso de FILESTREAM a través de TSQL:

https://msdn.microsoft.com/en-us/library/cc645962.aspx

Uso de FILESTREAM a través de APIs Win32:

https://msdn.microsoft.com/en-us/library/cc645940.aspx

 

Moisés Romero Senosiain – Microsoft Customer Support Services