Share via


Acessar FileTables com APIs de E/S de arquivo

Descreve como a E/S do sistema de arquivos funciona em uma FileTable.

Neste tópico

Desejo...

  • Começar a usar APIs de E/S de arquivos com FileTables

  • Criar arquivos e diretórios em uma FileTable

  • Ler arquivos e diretórios em uma FileTable

  • Atualizar arquivos e diretórios em uma FileTable

  • Excluir arquivos e diretórios em uma FileTable

Saiba mais

  • Operações do sistema de arquivos com suporte

  • Considerações adicionais sobre acesso de E/S a arquivos para FileTables

    • Usando VNNs (nomes de rede virtual) com grupos de disponibilidade AlwaysOn

    • Atualizações parciais

    • Semântica transacional

    • Controle de simultaneidade

    • Gatilhos

  • Funcionalidade do sistema de arquivos com suporte em FileTables

Começar a usar APIs de E/S de arquivos com FileTables

O uso primário de FileTables espera ser por meio do sistema de arquivos do Windows e APIs de E/S de arquivos. FileTables oferecem suporte ao acesso não transacional por meio do conjunto vasto de APIs de E/S de arquivos disponíveis.

  1. O acesso à API de E/S de arquivos normalmente começa com a aquisição de 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.

  2. 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 transmitido 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. Em seguida, o identificador pode ser usado para transmitir dados, enumerar ou organizar diretórios, obter ou definir atributos de arquivos, excluir arquivos ou diretórios etc.

[INÍCIO]

Criando arquivos e diretórios em uma FileTable

Você pode criar um arquivo ou um diretório em uma FileTable chamando APIs de E/S de arquivos, como CreateFile ou CreateDirectory.

  • Há suporte para todos os sinalizadores de criação de disposição, modos de compartilhamento e modos de acesso. Isso inclui a criação, a exclusão e a modificação de arquivos no local. Também há suporte para atualizações de namespaces de arquivos, ou seja, operações para criar/excluir, renomear e mover diretórios.

  • 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 de acesso são impostos quando várias operações de E/S de arquivos simultâneas ou SQL Transact-SQL afetam o mesmo arquivo ou diretório na hierarquia.

[INÍCIO]

Lendo arquivos e diretórios em uma FileTable

A semântica de isolamento de leitura confirmada é imposta no SQL Server para todas as operações de acesso de E/S de arquivos no fluxo e nos dados de atributos.

[INÍCIO]

Gravando e atualizando arquivos e diretórios em uma FileTable

  • Todas as operações de gravação ou atualização de E/S de arquivos em uma FileTable não são transacionais. Ou seja, nenhuma transação SQL Server é associada a essas operações e nenhuma garantia de ACID é fornecida.

  • Todas as atualizações no local/de streaming de E/S de arquivos têm suporte para a FileTable.

  • As atualizações de dados ou atributos FILESTREAM por meio de APIs de E/S de arquivos resultam nas atualizações das colunas file_stream e de atributos correspondentes na FileTable.

[INÍCIO]

Excluindo arquivos e diretórios em uma FileTable

Toda a semântica da API de E/S de arquivos do Windows é imposta ao excluir um arquivo ou diretório.

  • Excluindo um diretório falhará se o diretório contiver qualquer subdiretório de arquivos.

  • A exclusão de um arquivo ou diretório remove a linha correspondente da FileTable. Isso é equivalente a excluir a linha por meio de uma operação Transact-SQL.

[INÍCIO]

Operações do sistema de arquivos com suporte

As FileTables oferecem suporte a APIs do sistema de arquivos relacionadas às seguintes operações do sistema de arquivos:

  • Gerenciamento de diretório

  • Gerenciamento de arquivos

As FileTables não oferecem suporte às seguintes operações:

  • Gerenciamento de disco

  • Gerenciamento de volume

  • NTFS transacional

[INÍCIO]

Considerações adicionais sobre acesso de E/S a arquivos para 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 a dados FILESTREAM ou FileTable por meio das APIs do sistema de arquivos deve usar VNNs em vez de nomes de computadores. 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 fazer atualizações parciais e locais ao conteúdo FILESTREAM. Esse comportamento é diferente do acesso transacionado ao FILESTREAM por meio de um identificador obtido chamando OpenSQLFILESTREAM() e transmitindo um contexto de transação explícita.

[INÍCIO]

Semântica transacional

Quando você acessar os arquivos em uma FileTable usando APIs de E/S de arquivos, essas operações não são associadas a qualquer transação do usuário e têm as seguintes características:

  • Como o acesso não transacionado aos dados FILESTREAM em uma FileTable não é associado a qualquer transação, ele não tem semântica de isolamento específica. Porém, o SQL Server pode usar transações internas para impor semântica de bloqueio ou simultaneidade nos dados da FileTable. Qualquer transação interna desse tipo é realizada com isolamento de confirmação de leitura.

  • Não há garantia ACID para essas operações não transacionadas em dados FILESTREAM. As garantias de consistência são semelhantes às de atualizações de arquivos feitas por aplicativos no sistema de arquivos.

  • Essas alterações não podem ser revertidas.

Entretanto, a coluna FILESTREAM em uma FileTable também pode ser acessada com por acesso transacional ao FILESTREAM chamando OpenSqlFileStream(). Esse tipo de acesso pode ser totalmente transacional e respeitará todos os níveis de transacionais consistentemente com suporte atualmente.

[INÍCIO]

Controle de simultaneidade

O SQL Server impõe o controle de simultaneidade para o acesso à FileTable entre aplicativos do sistema de arquivos, e entre aplicativos do sistema de arquivos e aplicativos Transact-SQL. Esse controle de simultaneidade é obtido aplicando-se os bloqueios apropriados nas linhas da FileTable.

[INÍCIO]

Gatilhos

A criação, modificação ou exclusão de arquivos ou diretórios, ou seus atributos, pelo sistema de arquivos resultará em operações de inserção, atualização ou exclusão correspondentes na FileTable. Qualquer gatilho DML Transact-SQL associado será disparado como parte dessas operações.

[INÍCIO]

Funcionalidade do sistema de arquivos com suporte em FileTables

Recurso

Com suporte

Comentários

Oplocks

Sim

Há 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 dispersão 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 oferece suporte a arquivos esparsos encaminhando as solicitações ao sistema de arquivos NTFS.

Compactação

Sim

Criptografia

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 ao sistema de arquivos NTFS.

Arquivos mapeados na 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 USN

Não

As alterações de metadados em arquivos e diretórios de uma FileTable são operações DML em um banco de dados do SQL Server. Portanto, elas são registradas em log no arquivo de log de banco de dados correspondente. Entretanto, não são registradas no diário NTFS USN (com exceção de alterações de tamanho).

Os recursos de controle de alterações do SQL Server podem ser usados para capturar informações semelhantes.

[INÍCIO]

Consulte também

Conceitos

Carregar arquivos em FileTables

Trabalhar com diretórios e caminhos em FileTables

Acessar FileTables com Transact-SQL

DDL, funções, procedimentos armazenados e exibições de FileTable