Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Descreve como a E/S do sistema de arquivos funciona em uma FileTable.
Introdução ao uso de APIs de E/S de arquivos com FileTables
Espera-se que o uso principal de FileTables seja por meio do sistema de arquivos do Windows e APIs de E/S de arquivos. FileTables suporta acesso não transacional através do rico conjunto de APIs de E/S de arquivos 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 suportada, como CreateFile() ou CreateDirectory(), para criar ou abrir um arquivo e obter um identificador. O identificador pode ser usado para transmitir dados, enumerar ou organizar diretórios, obter ou definir atributos de arquivo, 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 são suportados. Isso inclui a criação de arquivos, exclusão e modificação no local. Também são suportadas atualizações de File Namespace, ou seja, operações de criação/exclusão de diretório, renomeação e movimentação.
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, esta coluna é null.
Para arquivos, a coluna is_directory contém falso . Para diretórios, esta coluna contém verdadeiro.
O compartilhamento e a simultaneidade de 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 a ficheiros em dados de fluxo e atributos.
Escrevendo 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 não são transacionais. Ou seja, nenhuma transação do SQL Server está vinculada a essas operações e nenhuma garantia ACID é fornecida.
Todas as operações de streaming/atualizações no local de E/S de arquivo são suportadas 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 atributos de file_stream e arquivo correspondentes na FileTable.
Excluindo arquivos e diretórios em uma FileTable
Todas as semânticas da API de E/S do Windows são impostas quando você exclui um arquivo ou diretório.
A exclusão de um diretório falhará se o diretório contiver arquivos ou subdiretórios.
A exclusão de um arquivo ou diretório remove a linha correspondente da FileTable. Isso equivale a excluir a linha por meio de uma operação Transact-SQL.
Operações de sistema de arquivos suportadas
FileTables suporta as APIs do sistema de arquivos relacionadas às seguintes operações do sistema de arquivos:
Gestão de Diretórios
Gestão de Ficheiros
FileTables não suportam as seguintes operações:
Gerenciamento de disco
Gerenciamento de volumes
NTFS transacional
Considerações adicionais para acesso de E/S de arquivo a FileTables
Usando nomes de rede virtual (VNNs) com grupos de disponibilidade Always On
Quando o banco de dados que contém dados FILESTREAM ou FileTable pertence a um grupo de disponibilidade Always On, todo o acesso a 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 Always On (SQL Server).
Atualizações parciais
Um identificador gravável obtido para dados de um FILESTREAM em uma FileTable, usando a função GetFileNamespacePath (Transact-SQL), pode ser utilizado para realizar atualizações parciais diretamente no conteúdo 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 nenhuma transação de usuário e têm as seguintes características adicionais:
Como o acesso não transacionado a 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 semântica de bloqueio ou simultaneidade nos dados FileTable. Todas as transações internas desse tipo são feitas com isolamento de leitura confirmada.
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 arquivos 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 transacional FILESTREAM chamando OpenSqlFileStream(). Este tipo de acesso pode ser totalmente transacional e respeitará consistentemente todos os níveis de transacionalidade atualmente suportados.
Controle de Concorrência
O SQL Server impõe o controle de simultaneidade para acesso à FileTable entre aplicativos do sistema de arquivos e entre aplicativos do sistema de arquivos e aplicativos Transact-SQL. Este controlo de concorrência é obtido usando bloqueios apropriados nas linhas da FileTable.
Gatilhos
Criar, modificar ou excluir arquivos ou diretórios ou seus atributos através do sistema de arquivos resulta em operações correspondentes de inserção, atualização ou exclusão na FileTable. Todos os gatilhos DML Transact-SQL associados são acionados como parte dessas operações.
Funcionalidade do sistema de arquivos suportada em FileTables
| Capacidade | Suportado | Observações |
|---|---|---|
| Oplocks | Sim | Há suporte para oplocks de Nível 2, Nível 1, Batch e Filter. |
| 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 apenas em arquivos e afeta o armazenamento do fluxo de dados. Como os dados FILESTREAM são armazenados em volumes NTFS, o recurso FileTable suporta arquivos esparsos encaminhando as solicitações para o sistema de arquivos NTFS. |
| Compressão | Sim | |
| Encriptação | Sim | |
| TxF | Não | |
| Identificadores de ficheiro | Não | |
| Id de objeto | Não | |
| Ligações simbólicas | Não | |
| Links rígidos | 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 I/O | Sim | |
| Segurança | Não | A segurança ao nível de partilha do Windows e a segurança ao nível de tabela e coluna do SQL Server são aplicadas. |
| Diário da USN | Não | As 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 do banco de dados correspondente. No entanto, eles não são registados no diário USN NTFS, exceto quando há alterações no tamanho. Os recursos de controle de alterações do SQL Server podem ser usados para capturar informações semelhantes. |
Ver também
Carregar arquivos em FileTables
Trabalhar com diretórios e caminhos em FileTables
Tabelas de arquivos do Access com Transact-SQL
DDL FileTable, funções, procedimentos armazenados e visualizações