Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Descreve como a entrada/saída do sistema de arquivos funciona em uma FileTable.
Introdução ao uso de APIs de E/S de arquivo com FileTables
Espera-se que o uso primário de FileTables seja por meio do sistema de arquivos do Windows e das APIs de E/S de arquivo. As FileTables dão suporte ao acesso não transacional por meio do conjunto avançado de APIs de E/S de arquivo disponíveis.
O acesso à API de E/S de arquivo normalmente começa adquirindo um caminho UNC lógico para o arquivo ou diretório. Os aplicativos podem usar uma instrução Transact-SQL com a função GetFileNamespacePath (Transact-SQL) para obter o caminho lógico para o arquivo ou diretório. Para obter mais informações, consulte Trabalhar com diretórios e caminhos em FileTables.
Em seguida, o aplicativo usa esse caminho lógico para obter um identificador para o arquivo ou diretório e fazer algo com o objeto. O caminho pode ser passado para qualquer função de API do sistema de arquivos com suporte, como CreateFile() ou CreateDirectory(), para criar ou abrir um arquivo e obter um identificador. O identificador pode então ser usado para transmitir dados, enumerar ou organizar diretórios, para obter ou definir atributos de arquivo, para excluir arquivos ou diretórios e assim por diante.
Criando arquivos e diretórios em uma FileTable
Um arquivo ou diretório pode ser criado em uma FileTable chamando APIs de E/S de arquivo, como CreateFile ou CreateDirectory.
Todos os sinalizadores de disposição de criação, modos de compartilhamento e modos de acesso têm suporte. Isso inclui a criação, a exclusão e a modificação in-loco. Também há suporte para atualizações de namespace de arquivo, ou seja, criação/exclusão de diretório, renomeação e movimentação de operações.
A criação de um novo arquivo ou diretório corresponde à criação de uma nova linha na FileTable subjacente.
Para arquivos, os dados de fluxo são armazenados na coluna file_stream ; para diretórios, essa coluna é nula.
Para arquivos, a coluna is_directory contém false. Para diretórios, essa coluna contém true.
O compartilhamento e a simultaneidade do acesso são impostos quando várias operações simultâneas de E/S de arquivo ou operações de Transact-SQL afetam o mesmo arquivo ou diretório na hierarquia.
Lendo arquivos e diretórios em uma FileTable
A semântica de isolamento Read Committed é imposta no SQL Server para todas as operações de acesso de E/S de arquivo em dados de fluxo e atributo.
Gravando e atualizando arquivos e diretórios em uma FileTable
Todas as operações de gravação ou atualização de E/S de arquivo em uma FileTable são não transacionais. Ou seja, nenhuma transação do SQL Server está associada a essas operações e nenhuma garantia ACID é fornecida.
Todas as atualizações de streaming/in-loco de E/S de arquivo têm suporte para a FileTable.
As atualizações dos dados ou atributos FILESTREAM por meio de APIs de E/S de arquivo resultam em atualizações das colunas de atributo de arquivo e file_stream correspondentes na FileTable.
Excluindo arquivos e diretórios em uma FileTable
Todas as regras da semântica da API de E/S de arquivos do Windows são aplicadas quando você exclui um arquivo ou diretório.
A exclusão de um diretório falhará se o diretório contiver subdiretórios de arquivos.
Excluir um arquivo ou diretório remove a linha correspondente da FileTable. Isso equivale a excluir a linha através de uma operação de Transact-SQL.
Operações do sistema de arquivos com suporte
As FileTables dão suporte às APIs do sistema de arquivos relacionadas às seguintes operações do sistema de arquivos:
Gerenciamento de diretórios
Gerenciamento de Arquivos
FileTables não dão suporte às seguintes operações:
Gerenciamento de disco
Gerenciamento de Volume
NTFS transacional
Considerações adicionais para acesso de E/S de arquivo a FileTables
Usando VNNs (nomes de rede virtual) com grupos de disponibilidade AlwaysOn
Quando o banco de dados que contém dados FILESTREAM ou FileTable pertence a um grupo de disponibilidade AlwaysOn, todo o acesso aos dados FILESTREAM ou FileTable por meio das APIs do sistema de arquivos deve usar VNNs em vez de nomes de computador. Para obter mais informações, consulte FILESTREAM e FileTable com Grupos de Disponibilidade AlwaysOn (SQL Server).
Atualizações parciais
Um identificador gravável obtido para dados FILESTREAM em uma FileTable usando a função GetFileNamespacePath (Transact-SQL) pode ser usado para realizar atualizações parciais diretamente no conteúdo FILESTREAM. Esse comportamento é diferente do acesso filestream transacionado por meio de um identificador obtido chamando OpenSQLFILESTREAM() e passando um contexto de transação explícito.
Semântica transacional
Quando você acessa os arquivos em uma FileTable usando APIs de E/S de arquivo, essas operações não são associadas a transações de usuário e têm as seguintes características adicionais:
Como o acesso não transacionado aos dados FILESTREAM em uma FileTable não está associado a nenhuma transação, ele não tem nenhuma semântica de isolamento específica. No entanto, o SQL Server pode usar transações internas para impor a semântica de bloqueio ou simultaneidade nos dados fileTable. Todas as transações internas desse tipo são feitas com isolamento confirmado por leitura.
Não há garantias ACID para essas operações não transacionadas em dados FILESTREAM. As garantias de consistência são semelhantes às das atualizações de arquivo feitas por aplicativos no sistema de arquivos.
Essas alterações não podem ser revertidas.
No entanto, a coluna FILESTREAM em uma FileTable também pode ser acessada com acesso filestream transacional chamando OpenSqlFileStream(). Esse tipo de acesso pode ser totalmente transacional e respeitará consistentemente todos os níveis transacionais atualmente suportados.
Controle de simultaneidade
O SQL Server aplica controle de simultaneidade para o acesso ao FileTable entre aplicativos do sistema de arquivos, e entre os aplicativos do sistema de arquivos e os aplicativos Transact-SQL. Esse controle de simultaneidade é obtido usando bloqueios apropriados nas linhas FileTable.
Gatilhos
Criar, modificar ou excluir arquivos ou diretórios ou seus atributos por meio do sistema de arquivos resulta em operações de inserção, atualização ou exclusão correspondentes na FileTable. Todos os gatilhos DML Transact-SQL associados são ativados como parte dessas operações.
Funcionalidade do sistema de arquivos com suporte em FileTables
| Capacidade | Suportado | Comentários |
|---|---|---|
| Oplocks | Sim | Existe suporte para oplocks de Nível 2, Nível 1, Lote e Filtro. |
| Atributos Estendidos | Não | |
| Pontos de Reanálise | Não | |
| ACLs persistentes | Não | |
| Fluxos nomeados | Não | |
| Arquivos esparsos | Sim | A esparsidade pode ser definida somente em arquivos e afeta o armazenamento do fluxo de dados. Como os dados FILESTREAM são armazenados em volumes NTFS, o recurso FileTable dá suporte a arquivos esparsos encaminhando as solicitações para o sistema de arquivos NTFS. |
| Compressão | Sim | |
| Encryptiion | Sim | |
| TxF | Não | |
| IDs de arquivo | Não | |
| IDs de objeto | Não | |
| Links simbólicos | Não | |
| Links físicos | Não | |
| Nomes curtos | Não | |
| Notificações de alteração de diretório | Não | |
| Bloqueio de intervalo de bytes | Sim | As solicitações de bloqueio de intervalo de bytes são passadas para o sistema de arquivos NTFS. |
| Arquivos mapeados de memória | Não | |
| Cancelar E/S | Sim | |
| Segurança | Não | A segurança em nível de compartilhamento do Windows e a segurança em nível de tabela e coluna do SQL Server são impostas. |
| Diário da USN | Não | Alterações de metadados em arquivos e diretórios em uma FileTable são operações DML em um banco de dados do SQL Server. Portanto, eles são registrados no arquivo de log de banco de dados correspondente. No entanto, eles não são registrados no diário NTFS USN (exceto para alterações de tamanho). Os recursos de controle de alterações do SQL Server podem ser usados para capturar informações semelhantes. |
Consulte Também
Carregar arquivos em FileTables
Trabalhar com diretórios e caminhos em FileTables
Acessar FileTables com Transact-SQL
DDL fileTable, funções, procedimentos armazenados e exibições