Se eu quiser criar um banco de dados de 5 GB com
CREATE DATABASE [test]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'test', FILENAME = N'E:\2012\test.mdf' , SIZE = 5529600KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = N'test_log', FILENAME = N'E:\2012\test_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
leva 1 minuto no meu SSD.
Mas quando eu adiciono o usuário do SQL Server aoPerform volume maintenance tasks
leva apenas 1-2 segundos .
Por que é que? Alguém pode me explicar quais são as razões para isso?
Isso é por causa da inicialização instantânea de arquivo . Resumindo, o SQL Server pode tirar proveito desse privilégio para arquivos de dados de banco de dados (não arquivos de log de transações). Isso significa que o SQL Server não precisa zerar o(s) arquivo(s) de dados ao inicializar.
Sem o privilégio "Executar tarefas de manutenção de volume" concedido à conta do SQL Service, na criação do banco de dados, o SQL Server precisa zerar "test.mdf" e "test_log.ldf".
Com o conjunto de permissões de privilégio "Executar tarefas de manutenção de volume" , o SQL Server só precisa zerar "test_log.ldf". Uma sobrecarga significativamente menor, portanto, duração minimizada para o
CREATE DATABASE
teste.Referências
Como e por que habilitar a inicialização instantânea de arquivo Inicialização
instantânea – o que, por que e como?
Isso não afetará os arquivos .ldf (arquivos de log), pelo menos não de acordo com o artigo do MS
Por que fazê-lo? Velocidade
Por que NÃO fazê-lo? Possível risco de segurança. Alguém poderia invadir sua caixa e possivelmente ler os espaços de memória diferentes de zero e recuperar esses dados. Pequeno risco, mas ainda um risco. É por isso que não está habilitado por padrão.
Explicação detalhada: Como e por que ativar a inicialização instantânea de arquivo