O que são filegroups?
Como o próprio nome já diz, são coleções nomeadas de arquivos e são usados para simplificar o posicionamento de dados.
 
E afinal de contas, pra que controlar o posicionamento de dados?
Os filegroups melhoram o desempenho distribuindo dados por um ou mais discos e usando threads paralelos para processamento de consultas. Os filegroups também podem facilitar a manutenção do banco de dados.
 
Ponto de vista do desempenho
O desempenho das consultas melhora quando se tem o mesmo banco de dados distribuido em vários filegroups em discos ou array de discos diferentes. Uma prática bastante recomendada é separar as tabelas mais acessadas em filegroups distintos localizados em controladoras e discos diferentes, assim não há concorrência de I/O, otimizando tanto consultas quando escritas no banco. Você também pode usar vários filegroups para separar tabelas de seus índices no cluster, o que pode otimizar o acesso a dados em alguns casos.
 
Ponto de vista de gerenciamento
Os filegroups podem ser usados para separar dados com diferentes exigências de capacidade de gerenciamento, separando dados atualizados freqüentemente de dados relativamente estáticos. Com base nisso, também é possível usar estratégias diferentes de backup.
Você também pode separar os índices mais prováveis de fragmentação dos índices modificados com menos freqüência para otimizar tarefas de desframentação de índices.
 
Tipos de filegroups
Um banco de dados SQL Server tem um filegroup principal e também pode conter vários filegroups definidos pelo usuário. O filegroup principal contém o arquivo de dados principal com as tabelas do sistema, e, também contém arquivos secundários definidos pelo usuário que não estão alocados para outros filegroups.
Vale a pena lembrar que o arquivo de LOG é único e não pode estar dividido em filegroups ou arquivos secundários. O que se pode fazer é separar o arquivo LDF do disco em que está arquivo de dados principal, o que evita concorrência de gravação/consulta.
 
Ao criar o banco de dados, na janela New Database veja que a parte em destaque, se refere ao arquivo físico e em qual filegroup ele estará organizado.
 
 Figura1
 
Antes de criar o banco de dados, clique no botão Filegroups no canto superior esquerdo e crie os filegroups necessários observando as opções em destaque.
 
 Figura2
 
Read-Only: não permite gravação de dados nos objetos gravados nesse filegroup.
Default: será o filegroup padrão ja criação e localização dos arquivos no disco.
 
Após criados os filegroups, clique no botão General e especifique a localização do arquivo no sistema de arquivos e o posicionamento deles em relação aos filegroups.
 
 
 Figura3
Ao pressionar OK, os arquivos serão criados nos caminhos específicos na coluna Path.
 
Daqui por diante, na criação de suas tabelas, se você não especificar o filegroup onde ela será criada, a tabela ficará localizada no filegroup definido com default (Dados_atuais conforme a Figura2).
 
CREATE TABLE Cliente
(ClienteID int IDENTITY PRIMARY KEY,
 Nome nvarchar(50),
 Cidade nvarchar(15),
 UF nvarchar(2))
 
Criando tabela especificando o filegroup:
 
CREATE TABLE Cliente
(ClienteID int IDENTITY PRIMARY KEY,
 Nome nvarchar(50),
 Cidade nvarchar(15),
 UF nvarchar(2))
ON filegroupname