Quando o recurso FILESTREAM é ativado no Microsoft SQL Server 2012, o SQL Server cria um compartilhamento "oculto" no sistema. O compartilhamento é definido da seguinte maneira:
Sharename FILESTREAM_SHARE
Path \\?\GLOBALROOT\Device\RsFx0320\<localmachine>\FILESTREAM_SHARE
Remark SQL Server FILESTREAM share
Maximum users unlimited
Users Caching Manual caching of documents
Permissions NT-AUTHORITY\Authenticated Users, FULL
O nome é o nome do compartilhamento que você fornece ao configurar inicialmente FILESTREAM no SQL Server Configuration Manager . Mas para que serve?
Tão longe
Eu li toda a documentação FILESTREAM disponível, começando em:
- FILESTREAM (SQL Server)
- Habilitar e configurar FILESTREAM
- Criar um banco de dados ativado para FILESTREAM
- Criar uma tabela para armazenar dados FILESTREAM
- ... e tudo relacionado
- Compatibilidade com FILESTREAM com outros recursos do SQL Server
- DDL FILESTREAM, funções, procedimentos armazenados e visualizações
- Acesse os dados FILESTREAM com o OpenSqlFilestream
- o artigo SQL Server 2008 - Armazenamento FILESTREAM no SQL Server 2008
- e o artigo FILESTREAM (OLTP) --- um guia de referência técnica para projetar soluções OLTP de missão crítica que referencia muitos outros materiais
... mas não houve menção ao compartilhamento e o que ele faz ou para que serve. Você digita o nome e o SQL Server cria o compartilhamento oculto.
Banco de dados ativado por FILESTREAM
Quando você cria um banco de dados ativado para FILESTREAM, o banco de dados faz referência a um grupo de arquivos que faz referência a um diretório (recomendado em uma unidade separada) que não tem absolutamente nada a ver com o compartilhamento, que foi criado inicialmente durante a configuração de FILESTREAM.
Script do banco de dados ativado para FILESTREAM
Sim, percebo que todos os caminhos estão em C :; é apenas um exemplo
O white paper de Paul Randall et al. passa a explicar que ...
Os dados FILESTREAM são armazenados no sistema de arquivos em um conjunto de diretórios NTFS chamados contêineres de dados, que correspondem a grupos de arquivos especiais no banco de dados. O acesso transacional aos dados do FILESTREAM é controlado pelo SQL Server e um driver de filtro do sistema de arquivos instalado como parte da ativação do FILESTREAM no nível do Windows. O uso de um driver de filtro do sistema de arquivos também permite acesso remoto aos dados FILESTREAM através de um caminho UNC. O SQL Server mantém um link das sortes das linhas da tabela para os arquivos FILESTREAM associados a eles. Isso significa que excluir ou renomear qualquer arquivo FILESTREAM diretamente através do sistema de arquivos resultará em corrupção do banco de dados.
... mais abaixo no documento (página 14) que eles continuam com ...
Há um único driver de filtro do sistema de arquivos FILESTREAM para cada volume NTFS que possui um contêiner de dados FILESTREAM e também um para cada versão do SQL Server que possui um contêiner de dados FILESTREAM no volume. Cada driver de filtro é responsável por gerenciar todos os contêineres de dados FILESTREAM desse volume, para todas as instâncias que usam uma versão específica do SQL Server.
Por exemplo, um volume NTFS que hospeda três contêineres de dados FILESTREAM, um para cada uma das três instâncias do SQL Server 2008, terá apenas um driver de filtro do sistema de arquivos SQL Server 2008 FILESTREAM.
Questões
- É bom saber que o SQL Server tem tudo de bom e funcional, mas o que esse compartilhamento realmente faz? É o chamado "driver de filtro do sistema de arquivos"?
- Como qualquer usuário autenticado pode acessar o "compartilhamento", quais são as implicações de segurança?
- O dispositivo RsFx0320 é um antecessor do formato de sistema de arquivos resiliente que foi introduzido no Windows Server 2012?
Se você puder fornecer respostas para minhas perguntas, seria bom se você pudesse fornecer uma referência de origem.