Ahora que ya hemos visto la teoría del almacenamiento FILESTREAM en SQL Server, llega el momento de ver un poco la práctica, para lo cual, realizaremos un sencillo ejemplo paso a paso de configuración del almacenamiento FILESTREAM, incluyendo cómo habilitar el almacenamiento FILESTREAM en una Instancia de SQL Server, cómo habilitar el almacenamiento FILESTREAM en una Base de Datos existente de SQL Server, y cómo crear una tabla con campos VARBINARY(MAX) configurador para utilizar el almacenamiento FILESTREAM.
¿Cómo habilitar el almacenamiento FILESTREAM en una Instancia de SQL Server?
Lo primero que deberemos hacer es habilitar el acceso FILESTREAM a nivel de nuestra Instancia de SQL Server, lo cual se trata de una configuración a realizar en dos pasos. El primer paso es habilitar el almacenamiento FILESTREAM a nivel de Sistema Operativo, para lo cual utilizaremos la herramienta administrativa SQL Server Configuration Manager para mostrar el diálogo de Propiedades de nuestra instancia de SQL Server.
En el diálogo de Propiedades de nuestra Instancia de SQL Server, seleccionaremos la pestaña FILESTREAM, para seguidamente habilitar el almacenamiento FILESTREAM (Enable FILESTREAM for Transact-SQL access, Enable FILESTREAM for file I/O streaming access, y Allow remote clients to have streaming access to FILESTREAM data), de forma similar a como se muestra en la siguiente pantalla capturada.
El segundo paso a realizar es habilitar el almacenamiento FILESTREAM a nivel de SQL Server, para lo cual, ejecutaremos el procedimiento sp_configure (por ejemplo, desde una ventana de consulta en SQL Server Management Studio), de forma similar a como se muestra en la siguiente pantalla capturada.
Este segundo paso de configuración, también puede realizarse de forma gráfica, por ejemplo, desde el diálogo de propiedades de nuestra Instancia de SQL Server dentro del SQL Server Management Studio, configurando la opción Filestream Access Level en la página Advanced, tal y como se muestra en la siguiente pantalla capturada.
Una vez que hemos habilitado el almacenamiento FILESTREAM en SQL Server, deberemos reiniciar nuestra Instancia de SQL Server.
Un detalle curioso, es observar el resultado de la ejecución del comando NET SHARE, de tal modo, que podamos observar que tras habilitar el almacenamiento FILESTREAM tenemos disponible una nueva Carpeta Compartida (Network Share).
¿Cómo habilitar el almacenamiento FILESTREAM en una Base de Datos existente?
Ahora toca hacer lo propio con la Base de Datos en la que deseemos utilizar el almacenamiento FILESTREAM. En nuestro caso de ejemplo partimos de una Base de Datos existente, en la cual, deseamos poder empezar a utilizar el almacenamiento FILESTREAM. Para ello, deberemos crear un nuevo Grupo de Ficheros (File Group) para FILESTREAM utilizando la cláusula CONTAINS FILESTREAM, para seguidamente agregar al menos un fichero (bueno, en realidad es una carpeta asociada a un fichero lógico de base de datos). Básicamente deberemos ejecutar algo similar al siguiente código de ejemplo.
ALTER DATABASE PruebaFS ADD FILEGROUP FileStreamGroup01 CONTAINS FILESTREAM GO ALTER DATABASE PruebaFS ADD FILE ( NAME = 'FileStreamFile01' ,FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\PruebaFS' ) TO FILEGROUP FileStreamGroup01 GO |
A continuación se muestra un ejemplo de la ejecución del anterior código Transact-SQL.
Ahora, al mostrar la página FileGroups de las Propiedades de la Base de Datos en el SQL Server Management Studio, podremos ver algo como lo siguiente:
Del mismo modo, al mostrar la página Files de las Propiedades de la Base de Datos en el SQL Server Management Studio, podremos ver algo similar a:
Ahora que ya hemos configurado nuestra Base de Datos para poder utilizar almacenamiento FILESTREAM, podremos observar que se ha creado la correspondiente carpeta en el Sistema de Ficheros, para el almacenamiento y gestión de los datos FILESTREAM.
¿Cómo especificar en qué campos de qué tablas utilizar el almacenamiento FILESTREAM?
Realizado todo esto, ya estamos preparados para empezar a usar el almacenamiento FILESTREAM en nuestra base de datos, para lo cual, tan sólo deberemos utilizar el tipo de dato VARBINARY(MAX) con la opción FILESTREAM. A continuación se muestra un código Transact-SQL de ejemplo para crear una tabla que utilice almacenamiento FILESTREAM.
CREATE TABLE dbo.FileStreamTable ( [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE, [Description] VARCHAR(50), [BinData] VARBINARY(MAX) FILESTREAM NULL ) GO |
Igualmente, a continuación se muestra un ejemplo de la ejecución del anterior código Transact-SQL.
Una vez hemos creado nuestra tabla, podemos empezar a utilizarla de inmediato. A continuación se muestra un par de ejemplos de Transact-SQL, para insertar y consultar nuestra tabla y datos FILESTREAM.
INSERT INTO dbo.FileStreamTable VALUES(newid(), 'Dato 1', CAST ('Dato 1' AS VARBINARY(MAX))) GO SELECT BinData.PathName() FROM dbo.FileStreamTable GO |
Igualmente, a continuación se muestra la salida de la ejecución del anterior código de ejemplo.
Poco más por hoy. Como siempre, confío que la lectura resulte de interés.