Gerenciar FileTables
Descreve tarefas administrativas comuns para gerenciar FileTables.
Neste tópico
Desejo...
Obter uma lista de FileTables e objetos relacionados
Desabilitar e reabilitar o acesso não transacional no nível de banco de dados
Como desabilitar e reabilitar o acesso não transacional no nível de banco de dados
Como garantir a visibilidade do FileTables em um banco de dados
Desabilitar e reabilitar o namespace FileTable no nível de tabela
- Como desabilitar e reabilitar o namespace FileTable no nível de tabela
Eliminar identificadores de arquivos abertos associados a um FileTable
Como obter uma lista de identificadores de arquivos abertos associados a um FileTable
Como eliminar identificadores de arquivos abertos associados a um FileTable
Como identificar os bloqueios mantidos por FileTables
Saiba mais
Segurança de FileTable
Backup e FileTables
Recursos do SQL Server Profiler e FileTables
Auditoria e FileTables
DBCC e FileTables
Como obter uma lista de FileTables e objetos relacionados
Para obter uma lista de FileTables, consulte um das exibições do catálogo a seguir:
sys.tables (Transact-SQL) (Verifique o valor da coluna is_filetable.)
SELECT * FROM sys.filetables;
GO
SELECT * FROM sys.tables WHERE is_filetable = 1;
GO
Para obter uma lista dos objetos definidos pelo sistema que foram criados quando as FileTables associadas foram criadas, consulte o exibição do catálogo sys.filetable_system_defined_objects (Transact-SQL).
SELECT object_id, OBJECT_NAME(object_id) AS 'Object Name'
FROM sys.filetable_system_defined_objects
WHERE object_id = filetable_object_id;
GO
[TOP]
Desabilitando e reabilitando o acesso não transacional no nível de banco de dados
Para adquirir o acesso exclusivo que é necessário para determinadas tarefas administrativas, talvez seja necessário desabilitar temporariamente o acesso não transacional.
Comportamento da instrução ALTER DATABASE ao alterar o nível de acesso não transacional
Quando você definir o acesso não transacional como READ_ONLY ou OFF, o comando ALTER DATABASE não retornará o controle ao usuário enquanto houver identificadores de arquivos abertos em conflito com a operação solicitada. Os identificadores de arquivos que estão em conflito com esta operação incluem o seguinte:
Quando você está definindo o acesso como NONE, todos os identificadores de arquivos abertos.
Quando você está definindo o acesso como READ_ONLY, todos os identificadores de arquivos abertos para acesso de gravação.
Para obter informações sobre como eliminar identificadores de arquivos abertos, consulte Eliminando identificadores de arquivos abertos associados a um FileTable neste tópico.
Se o comando ALTER DATABASE for cancelado ou terminar com um tempo limite, o nível de acesso transacional não será alterado.
Se você chamar a instrução ALTER DATABASE com uma cláusula WITH <termination> (ROLLBACK AFTER integer [ SECONDS ] | ROLLBACK IMMEDIATE | NO_WAIT), todos os identificadores de arquivos não transacionais abertos serão eliminados.
Cuidado |
---|
A eliminação de identificadores de arquivos abertos pode levar os usuários a perderem dados não salvos. Esse comportamento é consistente com o comportamento do próprio sistema de arquivos. |
Efeitos de desabilitar o acesso não transacional
A alteração do nível de acesso não transacional no nível de banco de dados tem os seguintes efeitos nos diretórios de FileTable sob o diretório em nível de banco de dados:
Quando você definir o acesso como NONE, todos os diretórios FileTable e seu conteúdo não ficará mais acessível nem visível.
Quando você definir o acesso como READ_ONLY, todos os diretórios FileTable e seu conteúdo também serão somente leitura.
A desabilitação de FILESTREAM no nível de instância tem os seguintes efeitos nos diretórios em nível de banco de dados nessa instância e nos diretórios de FileTable sob eles:
- Nenhum dos diretórios em nível de banco de dados na instância estará visível se FILESTREAM for desabilitado no nível de instância.
[TOP]
Como desabilitar e reabilitar o acesso não transacional no nível de banco de dados
Para obter mais informações, consulte Opções ALTER DATABASE SET (Transact-SQL).
Para desabilitar o acesso não transacional
Chame a instrução ALTER DATABASE e defina o valor de NON_TRANSACTED_ACCESS para READ_ONLY ou OFF.-- Disable write access. ALTER DATABASE database_name SET FILESTREAM ( NON_TRANSACTED_ACCESS = READ_ONLY ); GO -- Disable non-transactional access. ALTER DATABASE database_name SET FILESTREAM ( NON_TRANSACTED_ACCESS = OFF ); GO
Para reabilitar o acesso não transacional
Chame a instrução ALTER DATABASE e defina o valor de NON_TRANSACTED_ACCESS para FULL.ALTER DATABASE database_name SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL ); GO
[TOP]
Como garantir a visibilidade do FileTables em um banco de dados
Um diretório em nível de banco de dados e os diretórios FileTable sob ele estarão visíveis quando todas essa condições forem atendidas
O FILESTREAM está habilitado no nível de instância.
O acesso não transacional está habilitado no nível de banco de dados.
Um diretório válido foi especificado ao nível de banco de dados.
Desabilitando e reabilitando o namespace FileTable no nível de tabela
Desabilitar o namespace FileTable desabilita todos os gatilhos e restrições definidos pelo sistema que foram criados com o FileTable. Isso é útil em casos em que um FileTable precisa ser reorganizado em grande escala usando operações Transact-SQL sem recorrer à imposição de semântica de FileTable. Entretanto, essas operações podem deixar FileTable em um estado inconsistente e podem impedir a reabilitação do namespace FileTable.
A desabilitação de um namespace FileTable tem os resultados seguintes:
As colunas e dados de FileTable não são fisicamente removidos da tabela.
O diretório de FileTable, e seus arquivos e diretórios, desaparecem do sistema de arquivo e não estão disponíveis para o acesso de E/S de arquivo.
As colunas de FileTable definidas pelo sistema não podem ser removidas e recriadas; caso contrário, contudo elas se comportam como qualquer outra coluna em operações DML.
Identificadores de arquivos abertos impedem que as restrições de FileTable sejam desabilitadas, pois essa operação requer um bloqueio de esquema na tabela.
A execução de toda a semântica de FileTable, inclusive restrições definidas por sistema e gatilhos, é interrompida depois que o namespace FileTable é desabilitado.
A reabilitação de um namespace FileTable tem os seguintes resultados:
É verificada a consistência de FileTable. Se forem encontradas inconsistências, um erro ocorrerá e o FileTable permanecerá desabilitado; caso contrário, o FileTable será reabilitado.
A imposição da semântica de FileTable, inclusive restrições definidas pelo sistema e gatilhos, é restaurada.
O diretório de FileTable, e seus arquivos e diretórios, ficam visíveis no sistema de arquivo e ficam disponíveis para o acesso de E/S de arquivo.
[TOP]
Como desabilitar e reabilitar o namespace FileTable no nível de tabela
Chame a instrução ALTER TABLE com a opção { ENABLE | DISABLE } FILETABLE_NAMESPACE.
Para desabilitar o namespace da FileTable
ALTER TABLE filetable_name DISABLE FILETABLE_NAMESPACE; GO
Para reabilitar o namespace da FileTable
ALTER TABLE filetable_name ENABLE FILETABLE_NAMESPACE; GO
[TOP]
Eliminando identificadores de arquivos abertos associados a um FileTable
Os identificadores abertos para os arquivos armazenados em uma FileTable podem impedir o acesso exclusivo que é necessário para determinadas tarefas administrativas. Para habilitar tarefas urgentes, você poderá precisar eliminar identificadores de arquivos abertos associados a uma ou mais FileTables.
Cuidado |
---|
A eliminação de identificadores de arquivos abertos pode levar os usuários a perderem dados não salvos. Esse comportamento é consistente com o comportamento do próprio sistema de arquivos. |
[TOP]
Como obter uma lista de identificadores de arquivos abertos associados a um FileTable
Consulte a exibição do catálogo sys.dm_filestream_non_transacted_handles (Transact-SQL).
SELECT * FROM sys.dm_filestream_non_transacted_handles;
GO
[TOP]
Como eliminar identificadores de arquivos abertos associados a um FileTable
Chame o procedimento armazenado sp_kill_filestream_non_transacted_handles (Transact-SQL) com os argumentos apropriados para eliminar todos os identificadores de arquivos abertos no banco de dados ou no FileTable, ou para eliminar um identificador específico.
USE database_name;
-- Kill all open handles in all the filetables in the database.
EXEC sp_kill_filestream_non_transacted_handles;
GO
-- Kill all open handles in a single filetable.
EXEC sp_kill_filestream_non_transacted_handles @table_name = 'filetable_name';
GO
-- Kill a single handle.
EXEC sp_kill_filestream_non_transacted_handles @handle_id = integer_handle_id;
GO
[TOP]
Como identificar os bloqueios mantidos por FileTables
A maioria dos bloqueios feitos por FileTables correspondem a arquivos abertos por aplicativos.
Para identificar arquivos abertos e os bloqueios associados
Una o campo request_owner_id na exibição de gerenciamento dinâmico sys.dm_tran_locks (Transact-SQL) ao campo fcb_id em sys.dm_filestream_non_transacted_handles (Transact-SQL). Em alguns casos, o bloqueio não corresponde a um único identificador de arquivo aberto.SELECT opened_file_name FROM sys.dm_filestream_non_transacted_handles WHERE fcb_id IN ( SELECT request_owner_id FROM sys.dm_tran_locks ); GO
[INÍCIO]
Segurança de FileTable
Os arquivos e diretórios armazenados em FileTables só ficam protegidos pela segurança do SQL Server. A segurança com base em tabela e coluna é imposta para acesso de sistema de arquivos, assim como o acesso Transact-SQL. Não há suporte para configurações de ACL e APIs de segurança do sistema de arquivos Windows.
As permissões de segurança e acesso aplicáveis a grupos de arquivos e contêineres FILESTREAM também se aplicam a FileTables, desde que os dados de arquivos estejam armazenados como uma coluna FILESTREAM no FileTable.
Segurança de FileTable e acesso Transact-SQL
O acesso aos dados Transact-SQL em FileTables é protegido da mesma maneira que qualquer outra tabela. São feitas verificações de segurança apropriadas em nível de tabela e de coluna para cada operação que acessa ou altera os dados.Segurança de FileTable e acesso ao sistema de arquivos
APIs do sistema de arquivos exigem permissões apropriadas do SQL Server na linha inteira no FileTable (ou seja, permissão em nível de tabela) para abrir um identificador em um arquivo ou diretório armazenado no FileTable. Se o usuário não tiver a permissão SQL Server apropriada em qualquer coluna do FileTable, o acesso ao sistema de arquivos será negado.
[INÍCIO]
Backup e FileTables
Quando você usa o SQL Server para fazer backup de um FileTable, o backup dos dados FILESTREAM é feito com os dados estruturados no banco de dados. Se você não desejar fazer backup de dados FILESTREAM com dados relacionais, poderá usar um backup parcial para excluir grupos de arquivos FILESTREAM.
Consistência transacional de backups de FileTable
Muitas ferramentas e operações administrativas, (inclusive backup, backup de log e replicação transacional) leem dados transacionalmente consistentes lendo os logs de transações. Neste momento, eles leem quaisquer dados FILESTREAM atualizados como parte de uma transação. Quando o acesso não transacional não está habilitado no nível de banco de dados, essas ferramentas e operações funcionam com total consistência transacional.
Entretanto, quando o acesso completo não transacional estiver habilitado, uma FileTable poderá conter dados que foram atualizados mais recentemente (por meio de uma atualização não transacional) do que a transação que a ferramenta ou o processo está lendo no log de transação. Isso significa que uma operação de restauração pontual em uma transação específica pode conter dados FILESTREAM mais recentes do que aquela transação. Esse é o comportamento esperado quando são permitidas atualizações não transacionais em FileTables.
[INÍCIO]
Recursos do SQL Server Profiler e FileTables
O SQL Server Profiler pode capturar as operações Abrir Arquivo e Fechar Arquivo do Windows no rastreamento gerado para arquivos que são armazenados em um FileTable.
[INÍCIO]
Auditoria e FileTables
A FileTable pode ser auditada como qualquer outra tabela. Entretanto, os padrões de acesso Win32 não são operações baseadas em conjunto. Uma única ação no sistema de arquivos é traduzida em várias operações DML Transact-SQL. Por exemplo, a abertura de um arquivo no Microsoft Word se traduz em várias operações de abertura/fechamento/criação/renomeação/exclusão e em atividades DML Transact-SQL correspondentes. Isso resulta em registros de auditoria detalhados, onde é difícil correlacionar registros entre ações do sistema de arquivos e registros de auditoria DML Transact-SQL correspondentes.
[INÍCIO]
DBCC e FileTables
Você pode usar DBCC CHECKCONSTRAINTS para validar as restrições em uma FileTable, inclusive restrições definidas pelo sistema.
[INÍCIO]
Consulte também
Conceitos
Compatibilidade do FileTable com outros recursos do SQL Server
DDL, funções, procedimentos armazenados e exibições de FileTable