FileTables (SQL Server)

Se aplica a:SQL Server

La característica FileTable proporciona compatibilidad con el espacio de nombres de archivo de Windows y con las aplicaciones Windows para los datos de archivo almacenados en SQL Server. La tabla de archivos permite que una aplicación pueda integrar sus componentes de administración de datos y almacenamiento, así como proporcionar servicios de SQL Server integrados (incluidas la búsqueda de texto completo y la búsqueda semántica) en datos y metadatos no estructurados.

Es decir, puede almacenar archivos y documentos en tablas especiales de SQL Server denominadas FileTables, pero acceder a ellos desde aplicaciones Windows como si estuvieran almacenados en el sistema de archivos, sin realizar ningún cambio en las aplicaciones de su cliente.

La característica FileTable se basa en la tecnología de FILESTREAM de SQL Server. Para obtener más información sobre FILESTREAM, vea FILESTREAM (SQL Server).

Ventajas de la característica FileTable

Los objetivos de la característica FileTable incluyen los siguientes:

  • Compatibilidad con la API de Windows para los datos de archivos almacenados en una base de datos de SQL Server. La compatibilidad con la API de Windows incluye lo siguiente:

    • Acceso no transaccional de transmisión por secuencias y actualizaciones en contexto de datos FILESTREAM.

    • Espacio de nombres jerárquico de directorios y archivos.

    • Almacenamiento de atributos de archivo, como fecha de creación y fecha de modificación.

    • Compatibilidad con las API de administración de archivos y directorios de Windows.

  • Compatibilidad con otras características de SQL Server, incluidas herramientas de administración, servicios y capacidades de consultas relacionales en FILESTREAM y en datos de atributos de archivo.

De esta forma, FileTables quita una barrera importante respecto al uso de SQL Server para el almacenamiento y la administración de datos no estructurados que residan actualmente en los archivos y servidores de archivos. Las empresas pueden mover estos datos desde los servidores de archivo a FileTables para aprovechar la administración integrada y los servicios proporcionados por SQL Server. Al mismo tiempo, pueden mantener la compatibilidad de las aplicaciones Windows para sus aplicaciones existentes de Windows que ven estos datos como archivos del sistema de archivos.

¿Qué es una FileTable?

SQL Server proporciona una tabla de archivosespecial, también denominada FileTable, para aplicaciones que requieren almacenamiento de archivos y directorios en la base de datos, con compatibilidad con la API de Windows y acceso no transaccional. Una FileTable es una tabla de usuario especializada con un esquema predefinido que almacena los datos FILESTREAM, así como información de jerarquía de directorios y archivos e información de atributos de archivos.

Una FileTable proporciona la funcionalidad siguiente:

  • Una FileTable representa una jerarquía de directorios y archivos. Almacena los datos relacionados con todos los nodos de esa jerarquía, tanto para los directorios como los archivos que contienen. Esta jerarquía se inicia en un directorio raíz que se especifica cuando se crea la FileTable.

  • Cada fila de una FileTable representa un archivo o un directorio.

  • Cada fila contiene los elementos siguientes. Para obtener más información acerca del esquema de una FileTable, vea FileTable Schema.

    • Una columna file_stream para los datos de flujo y un identificador stream_id (GUID). (El valor de la columna file_stream es NULL para un directorio).

    • Las dos columnas path_locator y parent_path_locator para representar y mantener el elemento actual (archivo o directorio) y la jerarquía de directorios.

    • 10 atributos de archivo como fecha de creación y fecha de modificación que son útiles con las API de E/S de archivos.

    • Una columna de tipo compatible con las búsquedas de texto completo y semántica en archivos y documentos.

  • Una FileTable aplica ciertos desencadenadores y restricciones definidos por el sistema para mantener la semántica del espacio de nombres de archivo.

  • Cuando se configura la base de datos para el acceso no transaccional, la jerarquía de archivos y directorios representada en FileTable se en el recurso compartido de FILESTREAM configurado para la instancia de SQL Server. De esta forma, se proporciona acceso al sistema de archivos para aplicaciones Windows.

Algunas características adicionales de FileTables

  • Los datos de archivos y directorios almacenados en una FileTable se exponen a través de un recurso compartido de Windows para el acceso no transaccional a los archivos de las aplicaciones basadas en la API de Windows. Para una aplicación Windows, esto parece un recurso compartido normal con sus archivos y directorios. Las aplicaciones pueden usar un variado conjunto de API de Windows para administrar archivos y directorios del recurso compartido.

  • La jerarquía de directorios que apareció a través del recurso compartido es simplemente una estructura de directorios lógica que se mantiene en FileTable.

  • Un componente de SQL Server intercepta las llamadas para crear o cambiar un archivo o directorio a través del recurso compartido de Windows y las refleja en los datos relacionales correspondientes de la FileTable.

  • Las operaciones de la API de Windows no son transaccionales por naturaleza y no se asocian con transacciones de usuario. No obstante, el acceso transaccional a los datos FILESTREAM almacenados en una FileTable son totalmente compatibles, como es el caso de cualquier columna FILESTREAM de una tabla normal. Si necesita modificar archivos con frecuencia desde varias conexiones y garantizar una protección de archivos adecuada, use el acceso FILESTREAM transaccional a través de OpenSqlFilestream() en lugar de bloqueos de archivos exclusivos en el nivel de API de Windows.

  • Las FileTables también se pueden consultar y actualizar mediante el acceso normal de Transact-SQL. Además, se integran con las herramientas de administración de SQL Server y características como la copia de seguridad.

  • No puedes enviar una solicitud de correo electrónico a través de Correo electrónico de base de datos ni adjuntar un archivo ubicado en un directorio de FILESTREAM (y, por tanto, FileTable). El controlador del filtro del sistema de archivos RsFx0420 inspecciona las solicitudes entrantes de E/S que entran y salen de la carpeta de FILESTREAM. Si la solicitud no procede del archivo ejecutable SQLServer y el código FILESTREAM, se deshabilitan explícitamente.

Consideraciones adicionales sobre el uso de FileTables

Consideraciones administrativas

FILESTREAM y FileTables

Las FileTables se configuran independientemente de FILESTREAM. Por lo tanto, puede continuar usando la característica FILESTREAM sin habilitar el acceso no transaccional ni crear FileTables.

No existe el acceso no transaccional a los datos FILESTREAM salvo a través de las FileTables. Por tanto, cuando se habilita el acceso no transaccional, el comportamiento de las columnas FILESTREAM y de las aplicaciones existentes no se ve afectado.

FileTables y acceso no transaccional

Puede habilitar o deshabilitar el acceso no transaccional en el nivel de base de datos.

Puede configurar o ajustar el acceso no transaccional en el nivel de base de datos desactivándolo, habilitando el acceso de solo lectura o el acceso completo de lectura y escritura.

Las FileTables no admiten archivos asignados en memoria

Las FileTables no admiten archivos asignados en memoria. El Bloc de notas y Paint son dos ejemplos comunes de aplicaciones que utilizan archivos asignados en memoria. No puedes utilizar estas aplicaciones en el mismo ordenador que SQL Server para abrir archivos que se almacenan en una FileTable. No obstante, puedes utilizar estas aplicaciones desde un equipo remoto para abrir archivos que se almacenan en una FileTable, porque en estas circunstancias no se utiliza la característica de asignación de memoria.