Michael Firsov

¿Alguna vez pensó que su SQL server puede funcionar como un servidor de archivos? Las probabilidades son que usted no lo hizo, ni yo hasta que probé una función de FileTable introducida por primera vez en SQL Server 2012. La función FileTable es el siguiente paso en la tecnología FILESTREAM que le permite almacenar archivos y carpetas en las tablas especiales, pero acceder a ellas utilizando el protocolo SMB tradicional de Windows: los usuarios pueden crear/leer/modificar / eliminar archivos de un recurso compartido de archivos genérico sin siquiera ser conscientes de los comandos SQL subyacentes. En otras palabras, los FileTables nos permiten usar tablas SQL para el acceso no transaccional.

En mi opinión, uno de los mayores beneficios de la función FileTables es el almacenamiento de atributos de archivo (como Last-WriteTime, Last_AccessHime, etc.).) que permite a los administradores auditar las operaciones de acceso a archivos utilizando las columnas correspondientes en las tablas de archivos. En este artículo, me gustaría mostrarle cómo se puede usar SQL Server 2012-2016 para el almacenamiento de archivos y qué mecanismos de auditoría se pueden aprovechar para los archivos y carpetas que residen en los recursos compartidos de archivos SQL. Se deben cumplir algunos requisitos previos antes de que se puedan crear tablas de archivos en una base de datos y repasaremos todos los pasos necesarios para prepararse para las Tablas de archivos, luego crearemos varias tablas y veremos cómo podemos trabajar con ellas.

Comencemos por habilitar el FLUJO de archivos para la instancia SQL 2012 y crear una nueva base de datos de FLUJO de archivos:

https://msdn.microsoft.com/en-us/library/gg509097%28v=sql.120%29.aspx

Habilito FILESTREAM a nivel de Windows

  1. Open SQL Configuration manager:
    02
  2. Asegúrese de que las siguientes casillas de verificación estén seleccionadas:
    03

II Habilite FILESTREAM a nivel de instancia SQL:

  1. En SQL Server Management Studio, haga clic en Nueva consulta para mostrar el Editor de consultas.
  2. En el Editor de consultas, ingrese el siguiente código Transact-SQL:
    EXEC sp_configure filestream_access_level, 2
    RECONFIGURE04

III Proporcionar un grupo de archivos FILESTREAM a nivel de base de datos

Antes de que podamos crear tablas de archivos en una base de datos, la base de datos debe tener un grupo de archivos FILESTREAM. Para obtener más información sobre este requisito previo, consulte Crear una base de datos habilitada para FILESTREAM.
Ya que voy a crear una nueva base de datos, primero crearé una carpeta para contener los archivos:
01
y luego definiré un grupo de archivos de flujo de archivos en este código:

CREATE DATABASE FILESERVER
ON
PRIMARY (NAME = FS,
FILENAME = ‘c:\FILESERVER\FSdat.mdf’),
GRUPO DE ARCHIVOS FileStreamFS CONTIENE FILESTREAM (NAME = FSgr,
FILENAME = ‘c:\FILESERVER\fs1’)
INICIAR SESIÓN (NAME = FSlog, FILENAME = ‘ c:\ FILESERVER \FSlog.ldf’)
GO

¡Atención! Como dice MS: «Para un grupo de archivos de FLUJO de archivos, NOMBRE de ARCHIVO se refiere a una ruta de acceso. La ruta hasta la última carpeta debe existir, y la última carpeta no debe existir.»En el código anterior, c:\FILESERVER debe existir, pero fs1 NO debe existir en el momento de ejecutar la instrucción CREATE DATABASE.

05

10

La página de propiedades de la base de datos Filegroups ahora muestra el flujo de archivos FileStreamFS para la base de datos de SERVIDORES de archivos:
07

IV Habilitar el Acceso no Transaccional a Nivel de base de datos

Una vez que tengamos la base de datos creada, el último paso para prepararla para FileTables es habilitar el acceso no transaccional a nivel de base de datos.

Los filetables permiten a las aplicaciones de Windows obtener un controlador de archivo de Windows para los datos de flujo de archivos sin necesidad de una transacción. Para permitir este acceso no transaccional a los archivos almacenados en SQL Server, debe especificar el nivel deseado de acceso no transaccional a nivel de base de datos para cada base de datos que contenga FileTables. Si ejecutamos el siguiente código –

SELECCIONE DB_NAME (database_id), non_transacted_access, non_transacted_access_desc
DE sys.database_filestream_options;
GO

see veremos que ninguna base de datos tiene habilitado el acceso no transaccional:
08

Para habilitar el acceso no transaccional a archivos a nivel de base de datos (para la base de datos de SERVIDORES de archivos en este caso) se debe especificar una opción más: un directorio para los FileTables: es el directorio que he creado en inicio del artículo-C:\FILESERVER, pero el nombre del directorio debe escribirse sin la letra de la unidad y el símbolo «\»:

ALTER DATABASE FILESERVER
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N’FILESERVER’ )
GO

09

«En la jerarquía de carpetas de la tabla de archivos, este el directorio se convierte en el hijo del nombre compartido especificado para FILESTREAM en el nivel de instancia, y el padre de los archivos creados en la base de datos»-significa que el SERVIDOR de archivos será la subcarpeta del recurso compartido de MSSQLSERVER, ya que no lo he cambiado en el paso I – 2. Para obtener más información, consulte Trabajar con directorios y rutas en tablas de archivos

Ejecutar de nuevo este código mostrará que el acceso no transaccional se ha habilitado correctamente:

SELECCIONE DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
DE sys.database_filestream_options;
GO

09-1

El siguiente código muestra el nombre de directorio para la base DE datos DEL SERVIDOR DE ARCHIVOS:

Select DB_NAME ( database_id), direcory_name
DE sys.opciones de archivo de datos;
GO

11

Aquí está el recurso compartido de archivos «SQL» que los usuarios ahora pueden usar para almacenar sus archivos y carpetas:10-1110-12

si hubiera cambiado el nombre del recurso compartido MSSQLSERVER predeterminado a algo como SHARE1 en el paso I-2, no habría habido ninguna indicación de que hubiera involucrado a SQL Server, desde la perspectiva del usuario, sería solo un recurso compartido de archivos ordinario.

Todos los requisitos previos para crear FileTables se cumplen ahora y podemos proceder a crearlos.

Trabajar con tablas de archivos de SQL Server-parte 2

Deja una respuesta

Tu dirección de correo electrónico no será publicada.