O artigo examina o armazenamento de dados não estruturados usando a estrutura de diretórios nativa do Windows e o gerenciamento por meio do banco de dados SQL Server. Posteriormente, demonstramos como realizar análises comparativas com o auxílio da Busca Semântica para obter informações valiosas dos dados. Além disso, você terá alguma experiência prática no armazenamento e vinculação de documentos no sistema de arquivos do Windows e no uso da pesquisa semântica.
É de grande importância tanto para iniciantes quanto para profissionais de banco de dados saberem como aplicar estratégias de armazenamento de arquivos, como File Table, para pesquisar tecnologias como Semantic Search para análise de dados não estruturados.
Pré-requisitos
Os pré-requisitos mencionados nesta seção se aplicam ao artigo completo, que consiste em três partes.
Conceitos de tabela de arquivos
Não faria mal ter conhecimento básico de File Table usado em bancos de dados SQL Server. No entanto, esta parte do artigo fornece informações detalhadas sobre como usar as tabelas de arquivos para armazenar documentos.
Conceitos de pesquisa semântica
Como o objetivo final deste artigo é realizar análises comparativas usando a Pesquisa Semântica, é altamente recomendável estar bem ciente dos conceitos básicos a seguir, principalmente se você estiver interessado em implementar o(s) passo a passo(s):
- Conceitos de pesquisa semântica.
- Documenta noções básicas de análise comparativa.
- Uso básico da pesquisa semântica.
Consulte o artigo Como usar a pesquisa semântica do SQL Server para atender aos requisitos acima, desde que você tenha habilidades básicas de T-SQL.
Noções básicas de pesquisa de texto completo
Além disso, recomendamos que você tenha conhecimento da Pesquisa de Texto Completo, que é oferecida como um complemento especial junto com a Pesquisa Semântica durante a instalação do SQL Server.
Observe que a pesquisa semântica também pode ser considerada como um recurso estendido da pesquisa de texto completo, pois não pode ser implementada sem atender aos requisitos básicos da pesquisa de texto completo.
Consulte o artigo Implementando a pesquisa de texto completo no SQL Server 2016 para iniciantes para obter mais informações sobre a pesquisa de texto completo.
Instância SQL em uso
Estamos usando a versão do SQL Server 2016 neste artigo, mas seguir as etapas não deve ser problema com as versões mais recentes, com poucas exceções.
Configurar banco de dados habilitado para FILESTREAM
Temos que usar um tipo especial de banco de dados chamado FILESTREAM Enabled Database para armazenar documentos no Windows File System e gerenciá-los pelo banco de dados SQL.
Existem algumas etapas que devem ser concluídas antes que possamos criar esse tipo especial de banco de dados.
Ativar FILESTREAM no nível da instância
Uma das primeiras coisas a fazer é habilitar FILESTREAM no nível de instância do SQL Server.
Digite Configuração do SQL Server 2016 (ou sua versão da instância SQL, se diferente do SQL 2016) na caixa de pesquisa do Windows, geralmente localizada no canto inferior esquerdo da barra de tarefas, conforme mostrado abaixo:
Clique para abrir o SQL Server Configuration Manager .
Localize e clique com o botão direito do mouse em sua instância SQL, que é SQLTAB2016 no nosso caso, e clique em Propriedades em Serviços SQL:
Marque Ativar FILESTREAM para acesso Transaction-SQL e Ative FILESTREAM para acesso de E/S de arquivo sob o FILESTREAM aba. Insira um nome de compartilhamento do Windows adequado também e clique em OK , como mostrado abaixo:
Alterar o nível de acesso do FILESTREAM
A próxima coisa é alterar o nível de acesso FILESTREAM de 0 para 2 se ainda não tiver sido alterado.
Execute o seguinte script T-SQL no banco de dados mestre:
-- Enabling FILESTREAM for SQL instance in use
EXEC sp_configure filestream_access_level, 2
RECONFIGURE
A saída é a seguinte:
Lembre-se de que não há problema se você executar o script acima, mesmo que FILESTREAM já esteja definido como 2.
Crie uma pasta do Windows para armazenar o banco de dados
Crie uma pasta do Windows C:\Sample\Data onde você irá armazenar fisicamente seu banco de dados SQL:
Você pode escolher qualquer unidade diferente da unidade C.
Criar banco de dados habilitado para FILESTREAM
Vamos agora criar um novo banco de dados habilitado para FILESTREAM chamado EmployeesFilestreamSample executando o seguinte script T-SQL no banco de dados mestre:
-- Creating FILESTREAM enabled database
CREATE DATABASE EmployeesFilestreamSample
ON
PRIMARY ( NAME = EmployeesSampleData,
FILENAME = 'c:\sample\data\EmployeesFilestreamSample.mdf'),
FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM( NAME = EmployeesSampleFilestreamGroup,
FILENAME = 'c:\sample\data\EmployeesSampleFilestreamGroup')
LOG ON ( NAME = EmployeesSampleLog,
FILENAME = 'c:\sample\data\EmployeesFilestreamLog.ldf')
GO
A saída é a seguinte:
O banco de dados habilitado para FILESTREAM foi criado com sucesso.
Verifique o banco de dados habilitado para FILESTREAM
Vá para Explorador de Objetos e expanda o EmployeesFilestreamSample banco de dados em Bancos de dados node para visualizar o banco de dados FILESTREAM Enabled recém-criado.
Configurar tabela de arquivos
Depois de criarmos o banco de dados FILESTREAM Enabled, a próxima etapa é configurar uma File Table, que vai nos ajudar a salvar nossos documentos no sistema de arquivos do Windows.
Nomear diretório FILESTREAM
Para criar a tabela de arquivos, precisamos fazer algumas alterações nas propriedades principais do banco de dados.
Clique com o botão direito do mouse no banco de dados (EmployeesFilestreamSample ) no Explorador de Objetos e clique em Propriedades :
Vá para as Opções Página e nome Nome do diretório FILESTREAM como EmployeesFilestreamDirectory, como mostrado na figura a seguir:
Definir Acesso não transacionado a FILESTREAM para FULL, conforme mostrado abaixo, e clique em OK:
Clique em Sim quando perguntado se você está bem para alterar as propriedades e fechar todas as conexões:
Criar tabela de arquivos
Crie uma nova tabela de arquivos para armazenar os documentos digitando e executando o seguinte script T-SQL:
USE EmployeesFilestreamSample
-- Creating Employees FileTable sample
CREATE TABLE EmployeesDocumentStore AS FileTable
WITH (
FileTable_Directory = 'EmployeesSampleFilestreamGroup',
FileTable_Collate_Filename = database_default
);
GO
Explorar a tabela de arquivos
Selecione Databases=> dbo.EmployeeDocumentStore=>Tabelas =>FileTables => LoyeesDocumentStore.
Clique com o botão direito do mouse em EmployeesDocumentStore e clique em Explorar o diretório FileTable , como mostrado abaixo:
Corrigindo o erro de localização do arquivo (bug da Microsoft)
Se você conseguir visualizar a pasta onde os documentos devem ser armazenados, está pronto, mas se encontrar o seguinte erro, precisará corrigi-lo primeiro:
CORREÇÃO:o erro "O local do arquivo não pode ser aberto" ocorre quando você tenta abrir um diretório FileTable no SQL Server
Este é um bug da Microsoft, conforme confirmado pela Microsoft:
Para corrigir esse bug, você deve executar a atualização cumulativa 11 para SQL Server 2016 SP2.
Execute a correção adequada à sua instância do SQL com base em sua versão se você não estiver usando a instância do SQL Server usada neste artigo e enfrentar o mesmo problema.
Baixe a atualização se for aplicável à sua instância SQL, conforme mostrado abaixo:
Você tem que aceitar os termos e condições para prosseguir da seguinte forma:
Depois que a atualização for instalada com sucesso, você deverá ver a seguinte mensagem:
Explorar a tabela de arquivos após resolver o erro de localização
Agora, você deve poder explorar o diretório FileTable:
A pasta do Windows agora pode ser preenchida com seus documentos não estruturados, como documentos do MS Word, conforme mostrado abaixo:
Criar e salvar documentos do MS Word para funcionários
Crie um novo documento do MS Word e nomeie-o Asif Permanent Employee, como mostrado abaixo:
Adicione o seguinte texto a este documento do Word e certifique-se de que a primeira linha seja o título do documento:
Asif Permanent Employee
Asif is a very experienced Project Manager with a solid programming background and highly skilled to work on data warehouse business intelligence (BI) solutions.
He is a quick learner and can work on multiple technologies and tools.
He has excellent communication skills and his overall rating is very good.
Lembre-se de salvar o documento.
Crie outro documento do MS Word e nomeie-o Peter Permanent Employee com o seguinte texto onde a primeira linha é o título do documento:
Peter Permanent Employee
Peter is a fresh Project Manager with a very strong programming background and highly skilled to work on data warehouse business intelligence (BI) solutions.
He can work with multiple teams and on multiple projects.
He has excellent business skills and his overall rating is good.
Lembre-se de salvar o documento, que deve conter o seguinte texto:
Visualizar documentos armazenados
Digite o seguinte código SQL para ver como o banco de dados SQL armazenou esses documentos:
-- View files stored on Windows File System managed by File Table in SQL Database
SELECT stream_id
,file_stream
,[name]
,file_type
,cached_file_size
,creation_time
FROM EmployeesFilestreamSample.dbo.EmployeesDocumentStore
A saída é a seguinte:
Parabéns! Você configurou com êxito um banco de dados habilitado para FILESTREAM para armazenar documentos no sistema de arquivos do Windows gerenciado pelo banco de dados SQL.
Em outras palavras, agora você pode tirar o máximo proveito do Windows File System criando e armazenando confortavelmente documentos não estruturados enquanto, por outro lado, você pode gerenciar totalmente esses documentos armazenados por meio de uma arquitetura consistente de banco de dados.
Por favor, não remova esses documentos se desejar continuar o passo a passo e manter contato, pois faremos uma análise comparativa nos documentos armazenados usando a Pesquisa Semântica na próxima parte deste artigo.