FILETABLE e FILESTREAM são questões de Prova! exame 70-462
You administer a Microsoft SQL Server 2012 instance.
You need to configure a new database to support FILETABLES.
What should you do? Choose all that apply.
Então, o que precisamos fazer para que nossa base de dados suporte FILETABLES??
Vamos simular o caso.
Primeiro crie um banco de dados.
Use master
Go
If Not Exists(Select * From sys.databases Where name = 'DB_FILETABLE')
Begin
Create Database DB_FILETABLE
End
Use DB_FILETABLE
Go
Adicione um grupo de arquivo FILESTREAM a base.
Alter database DB_FILETABLE
Add filegroup GRUPO_FileStream Contains FileStream;
Ops! Deu um erro
Msg 5591, Level 16, State 3, Line 32
FILESTREAM feature is disabled.
Bom, nesse caso precisamos habilitar o filestream!
EXEC sys.sp_configure N'filestream access level', N'2'
GO
RECONFIGURE WITH OVERRIDE
GO
Resultado:
Configuration option ‘filestream access level’ changed from 0 to 2. Run the RECONFIGURE statement to install.
Os níveis de acesso do FileStream são:
– Se especificado o valor 0, o FileStream estará desabilitado;
– Se especificado o valor 1, o FileStream estará habilitado para Transact-SQL access enabled;
– Se especificado o valor 2, o FileStream estará habilitado para Full access enabled(Transact-SQL access e Windows streaming access) ;
Agora vamos novamente tentar adicionar o filegroup para o filestream…
Alter database DB_FILETABLE
Add filegroup GRUPO_FileStream Contains FileStream;
Erro de novo!
Msg 5591, Level 16, State 3, Line 60
FILESTREAM feature is disabled.
Mesma mensagem? Por que?
Bem, eu habilitei o nível de acesso, porém o Filestream continua desabilitado.
Para habilitar acesse o SQL Server Configuration Manager, na guia FILESTREAM e marque as checkboxes Enable FILESTREAM for transact-SQL access e Enable FILESTREAM for file I/O streaming access, como mostra a imagem abaixo:
Reinicie o serviço do SQL SERVER.
https://technet.microsoft.com/en-us/library/cc645923%28v=sql.110%29.aspx
Agora vai!
Alter database DB_FILETABLE
Add filegroup GRUPO_FileStream Contains FileStream;
Resultado:
Command(s) completed successfully.
Precisamos definir o armazenamento associado com o grupo de arquivos FileStream adicionado acima:
Alter database DB_FILETABLE
Add file (
name = FileStream_GuiaDba,
filename = 'C:\Arquivo_SQL\FileStream_GRUPO_FileStream'
) to filegroup GRUPO_FileStream;
Go
Esse comando criará uma pasta com o nome FileStream_GRUPO_FileStream e um arquivo Filestream.HDR
Agora, se tentarmos a criação de uma tabela do tipo filetable…
use DB_FILETABLE;
go
create table Teste_FileTable as filetable;
...ganharemos o seguinte erro:
Msg 33414, Level 16, State 1, Line 109
FileTable objects require the FILESTREAM database option DIRECTORY_NAME to be non-NULL.
To create a FileTable in the database 'DB_FILETABLE', set the DIRECTORY_NAME option to a non-NULL value using ALTER DATABASE.
Or, to set the DIRECTORY_NAME option to NULL, in the database 'DB_FILETABLE' disable or drop the existing FileTables.
Para criarmos objetos, precisamos setar um nome de diretório.
Alter database DB_FILETABLE set filestream ( directory_name = 'Diretorio_FileTable' );
Go
Agora Vai!
use DB_FILETABLE;
go
create table Teste_FileTable as filetable;
Feito! Nossa base já suporta criação de objetos do tipo FileTable.
Select * From Teste_FileTable
Bom, isso responde a pergunta que poderá cair no seu exame de certificação.
O que precisamos fazer para que nossa base de dados suporte FILETABLES??
* Habilitar o FILESTREAM na instância do servidor;
* Adicionar um file group filestream;
* Setar um nome de diretório filestream para a base de dados;