Augusto Humire Martinez web blog

algo de web-in

Introducción a Sql Server FileStream

Esta es una introduccion a el uso de FILESTREAM en Sql Server que nos permite almacenar archivos de cualquier tipo en la base de datos. Una introcucción mas detallada la puede encontrar en este enlace.

Habilitar el FILESTREAM de la base de datos
Para utilizar FileStream en Sql Server se debe habilitar a traves del procedimiento llamado sp_configure segun las siguientes lineas

EXEC sp_configure filestream_access_level, 2
GO
RECONFIGURE
GO

Crear una Base de datos que use FILESTREAM
Una base de datos con FILESTREM deberia tener al meno los siguientes componentes:

Un Archivo MDF
Un Archivo LOG
Un Contenedor de datos FILESTREAM

Aqui el script para crear la base de datos:

CREATE DATABASE NorthPole
ON
PRIMARY (
      NAME = NorthPoleDB,
      FILENAME = ‘C:\Temp\NP\NorthPoleDB.mdf’
), FILEGROUP NorthPoleFS CONTAINS FILESTREAM(
      NAME = NorthPoleFS,
    FILENAME = ‘C:\Temp\NP\NorthPoleFS’)
LOG ON (                       
      NAME = NorthPoleLOG,
    FILENAME = ‘C:\Temp\NP\NorthPoleLOG.ldf’)
GO

Crear una tabla con una columna que use FILESTREAM

CREATE TABLE [dbo].[Items](
   [ItemID] UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE,
   [ItemNumber] VARCHAR(20),
   [ItemDescription] VARCHAR(50),
   [ItemImage] VARBINARY(MAX) FILESTREAM NULL
)

Es importante tener en cuenta que el identificador de cada registro debe de tener una columna UNIQUEIDENTIFIER con atributos ROWGUIDCOL y UNIQUE.

Insertar datos en el FILESTREAM
La inserción de datos se puede realizar de varias formas utilizando secuencias TSQL o utilizando comando especializados para el uso de FILESTREAM como BULK.
Para este proposito usamos OPENROWSET(BULK…) para cargar el contenido de un archivo desde el disco duro.

— Declare a variable to store the image data
DECLARE @img AS VARBINARY(MAX)
— Load the image data
SELECT @img = CAST(bulkcolumn AS VARBINARY(MAX))
      FROM OPENROWSET(
            BULK
            ‘C:\temp\MicrosoftMouse.jpg’,
            SINGLE_BLOB ) AS x

— Insert the data to the table         
INSERT INTO Items (ItemID, ItemNumber, ItemDescription, ItemImage)
SELECT NEWID(), ‘MS1001′,’Microsoft Mouse’, @img

Accesar a datos FILESTREAM con API

El acceso a la base de datos se puede realizar utilizando secuencias Transact SQL o API.
El siguiente ejemplo utiliza el API para obtener datos del Filestream

SELECT
      ItemNumber,
      ItemImage.PathName() AS FilePath
FROM Items

abril 3, 2012 - Posted by | Base de Datos

2 comentarios »

  1. Buena Manuelito!!!! Yo soy… Pelucon!!!

    Comentario por Anónimo | julio 10, 2012


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: