Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Describe cómo funciona la E/S del sistema de archivos en una FileTable.
Introducción al uso de api de E/S de archivos con FileTables
Se espera que el uso principal de FileTables sea a través del sistema de archivos de Windows y las API de E/S de archivos. FileTables admite el acceso no transaccional a través del amplio conjunto de API de E/S de archivos disponibles.
Normalmente, el acceso a la API de E/S de archivos comienza por adquirir una ruta de acceso UNC lógica para el archivo o directorio. Las aplicaciones pueden usar una instrucción Transact-SQL con la función GetFileNamespacePath (Transact-SQL) para obtener la ruta de acceso lógica del archivo o directorio. Para obtener más información, vea Trabajar con directorios y rutas de acceso en FileTables.
A continuación, la aplicación usa esta ruta de acceso lógica para obtener un identificador del archivo o directorio y hacer algo con el objeto . La ruta de acceso se puede pasar a cualquier función de API del sistema de archivos compatible, como CreateFile() o CreateDirectory(), para crear o abrir un archivo y obtener un identificador. A continuación, el identificador se puede usar para transmitir datos, enumerar o organizar directorios, obtener o establecer atributos de archivo, eliminar archivos o directorios, etc.
Crear archivos y directorios en una FileTable
Un archivo o directorio se puede crear en una FileTable llamando a las API de E/S de archivos, como CreateFile o CreateDirectory.
Se admiten todos los indicadores de disposición de creación, los modos de uso compartido y los modos de acceso. Esto incluye la creación, eliminación y modificación local de archivos. También se admiten las actualizaciones del espacio de nombres de archivo, es decir, la creación o eliminación de directorios, el cambio de nombre y las operaciones de movimiento.
La creación de un nuevo archivo o directorio corresponde a la creación de una nueva fila en la FileTable subyacente.
En el caso de los archivos, los datos del flujo se almacenan en la columna file_stream ; para directorios, esta columna es null.
En el caso de los archivos, la columna is_directory contiene false. En el caso de los directorios, esta columna contiene true.
El uso compartido y la simultaneidad del acceso se aplican cuando varias operaciones simultáneas de E/S de archivos o Transact-SQL afectan al mismo archivo o directorio de la jerarquía.
Leer archivos y directorios en una FileTable
La semántica de aislamiento read Committed se aplica en SQL Server para todas las operaciones de acceso de E/S de archivos en datos de secuencia y atributo.
Escribir y actualizar archivos y directorios en una FileTable
Todas las operaciones de escritura o actualización de E/S de archivos en Una FileTable no son transaccionales. Es decir, ninguna transacción de SQL Server está enlazada a estas operaciones y no se proporciona ninguna garantía ACID.
Todas las actualizaciones in situ o de streaming de E/S de archivos son compatibles con FileTable.
Las actualizaciones de los atributos o datos de FILESTREAM a través de las API de E/S de archivos generan actualizaciones de las columnas de atributos de archivo y file_stream correspondientes en FileTable.
Eliminación de archivos y directorios en una FileTable
Todas las semánticas de la API de E/S de archivos de Windows se aplican al eliminar un archivo o directorio.
Si el directorio contiene subdirectorios de archivos, se produce un error al eliminar un directorio.
Al eliminar un archivo o directorio, se quita la fila correspondiente de FileTable. Esto equivale a eliminar la fila a través de una operación de Transact-SQL.
Operaciones del sistema de archivos admitidas
FileTables admite las API del sistema de archivos relacionadas con las siguientes operaciones del sistema de archivos:
Administración de directorios
Administración de archivos
FileTables no admite las siguientes operaciones:
Administración de discos
Administración de volúmenes
NTFS transaccional
Consideraciones adicionales para el acceso de E/S de archivos a FileTables
Usar nombres de red virtual (VNN) con grupos de disponibilidad AlwaysOn
Cuando la base de datos que contiene datos FILESTREAM o FileTable pertenece a un grupo de disponibilidad AlwaysOn, todo el acceso a los datos FILESTREAM o FileTable a través de las API del sistema de archivos debe usar VNN en lugar de nombres de equipo. Para obtener más información, vea FILESTREAM y FileTable con grupos de disponibilidad AlwaysOn (SQL Server).
Actualizaciones parciales
Un identificador grabable obtenido para los datos FILESTREAM en una FileTable mediante la función GetFileNamespacePath (Transact-SQL) se puede usar para realizar actualizaciones parciales en contexto al contenido de FILESTREAM. Este comportamiento es diferente del acceso FILESTREAM transaccionado a través de un identificador obtenido llamando a OpenSQLFILESTREAM() y pasando un contexto de transacción explícito.
Semántica transaccional
Al acceder a los archivos de una FileTable mediante las API de E/S de archivos, estas operaciones no están asociadas a ninguna transacción de usuario y tienen las siguientes características adicionales:
Dado que el acceso no transaccionado a los datos FILESTREAM de una FileTable no está asociado a ninguna transacción, no tiene ninguna semántica de aislamiento específica. Sin embargo, SQL Server puede usar transacciones internas para aplicar la semántica de bloqueo o simultaneidad en los datos de FileTable. Las transacciones internas de este tipo se realizan con aislamiento de lectura confirmada.
No hay garantías ACID para estas operaciones no transaccionadas en los datos FILESTREAM. Las garantías de coherencia son similares a las de las actualizaciones de archivos realizadas por las aplicaciones del sistema de archivos.
Estos cambios no se pueden revertir.
Sin embargo, también se puede acceder a la columna FILESTREAM de una FileTable con acceso FILESTREAM transaccional mediante una llamada a OpenSqlFileStream(). Este tipo de acceso puede ser completamente transaccional y respetará de forma coherente todos los niveles de transacción que se admiten actualmente.
Control de simultaneidad
SQL Server aplica el control de simultaneidad para el acceso a FileTable entre las aplicaciones del sistema de archivos y entre las aplicaciones del sistema de archivos y las aplicaciones de Transact-SQL. Este control de simultaneidad se logra tomando los bloqueos apropiados en las filas de FileTable.
Desencadenadores
La creación, modificación o eliminación de archivos o directorios o sus atributos a través del sistema de archivos da como resultado las operaciones de inserción, actualización o eliminación correspondientes en FileTable. Los desencadenadores de DML asociados al Transact-SQL se activan como parte de estas operaciones.
Funcionalidad del sistema de archivos compatible con FileTables
Capacidad | Compatible | Comentarios |
---|---|---|
Oplocks | Sí | Hay compatibilidad con los interbloqueos de nivel 2, nivel 1, lote y filtro. |
Atributos extendidos | No | |
Puntos de reanálisis | No | |
ACL persistentes | No | |
Secuencias con nombre | No | |
Archivos dispersos | Sí | La dispersión solo se puede establecer en los archivos y afecta al almacenamiento del flujo de datos. Dado que los datos filestream se almacenan en volúmenes NTFS, la característica FileTable admite archivos dispersos reenviando las solicitudes al sistema de archivos NTFS. |
Compresión | Sí | |
Encryptiion | Sí | |
TxF | No | |
Identificadores de archivo | No | |
Identificadores de objeto | No | |
Vínculos simbólicos | No | |
Vínculos físicos | No | |
Nombres cortos | No | |
Notificaciones de cambio de directorio | No | |
Bloqueo de intervalo de bytes | Sí | Las solicitudes de bloqueo de intervalo de bytes se pasan al sistema de archivos NTFS. |
Archivos mapeados en memoria | No | |
Cancelar E/S | Sí | |
Seguridad | No | Se aplica la seguridad a nivel de recurso compartido en Windows y la seguridad a nivel de tabla y columna en SQL Server. |
Diario de USN | No | Los cambios de metadatos en los archivos y directorios de una FileTable son operaciones DML en una base de datos de SQL Server. Por lo tanto, se registran en el archivo de registro de base de datos correspondiente. Sin embargo, no se registran en el diario NTFS USN (excepto los cambios en el tamaño). Las funcionalidades de seguimiento de cambios de SQL Server se pueden usar para capturar información similar. |
Véase también
Cargar archivos en FileTables
Trabajar con directorios y rutas de acceso en FileTables
Acceso a FileTables con Transact-SQL
DDL de FileTable, funciones, procedimientos almacenados y vistas