Inicialização imediata de arquivo do banco de dadosDatabase Instant File Initialization

Aplica-se a:Applies to: simSQL ServerSQL Server (todas as versões compatíveis) yesSQL ServerSQL Server (all supported versions) Aplica-se a:Applies to: simSQL ServerSQL Server (todas as versões compatíveis) yesSQL ServerSQL Server (all supported versions)

Neste artigo, você aprende sobre a inicialização instantânea de arquivo e como habilitá-la para acelerar o crescimento de seus arquivos de banco de dados do SQL Server.In this article, you learn about instant file initialization, and how to enable it to speed up growth for your SQL Server database files.

Por padrão, arquivos de dados e de log são inicializados para substituir todos os dados existentes que foram deixados no disco por arquivos excluídos anteriormente.By default, data and log files are initialized to overwrite any existing data left on the disk from previously deleted files. Os arquivos de dados e de log são inicializados pela primeira vez ao anular os arquivos (preenchimento com zeros) quando você executa as seguintes operações:Data and log files are first initialized by zeroing the files (filling with zeros) when you perform the following operations:

  • Criar um banco de dados.Create a database.
  • Adicionar dados ou arquivos de log a um banco de dados existente.Add data or log files, to an existing database.
  • Aumentar o tamanho de um arquivo existente (inclusive operações de aumento automático).Increase the size of an existing file (including autogrow operations).
  • Restaurar um banco de dados ou grupo de arquivos.Restore a database or filegroup.

No SQL ServerSQL Server, a IFI (Inicialização Instantânea de Arquivo) permite uma execução mais rápida das operações de arquivo mencionadas anteriormente, já que ela recupera o espaço em disco usado sem preencher esse espaço com zeros.In SQL ServerSQL Server, instant file initialization (IFI) allows for faster execution of the previously mentioned file operations, since it reclaims used disk space without filling that space with zeros. Em vez disso, o conteúdo do disco é substituído à medida que novos dados são gravados nos arquivos.Instead, disk content is overwritten as new data is written to the files. Arquivos de log não podem ser inicializados de imediato.Log files cannot be initialized instantaneously.

Habilitar a inicialização instantânea de arquivoEnable instant file initialization

A inicialização instantânea de arquivo estará disponível somente se a SQL ServerSQL Server conta de inicialização do serviço tiver recebido SE_MANAGE_VOLUME_NAME.Instant file initialization is only available if the SQL ServerSQL Server service startup account has been granted SE_MANAGE_VOLUME_NAME. Os membros do grupo administrador do Windows têm esse direito e podem atribuí-lo a outros usuários adicionando-os à política de segurança Executar tarefas de manutenção de volume .Members of the Windows Administrator group have this right and can grant it to other users by adding them to the Perform Volume Maintenance Tasks security policy.

Importante

O uso de alguns recursos, como o TDE (Transparent Data Encryption), pode impedir a Inicialização Instantânea de Arquivo.Some feature usage, such as Transparent Data Encryption (TDE), can prevent Instant File Initialization.

Observação

A partir do SQL Server 2016 (13.x)SQL Server 2016 (13.x), essa permissão pode ser concedida à conta de serviço no momento da instalação.Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x), this permission can be granted to the service account at install time, during setup.

Se estiver usando a instalação do prompt de comando, adicione o argumento /SQLSVCINSTANTFILEINIT ou marque a caixa Conceder privilégio Realizar Tarefa de Manutenção de Volume para o Serviço de Mecanismo de Banco de Dados do SQL Server no assistente de instalação.If using the command prompt install, add the /SQLSVCINSTANTFILEINIT argument, or check the box Grant Perform Volume Maintenance Task privilege to SQL Server Database Engine Service in the installation wizard.

Para conceder a permissão Perform volume maintenance tasks a uma conta:To grant an account the Perform volume maintenance tasks permission:

  1. No computador em que o arquivo de dados será criado, abra o aplicativo Política de Segurança Local (secpol.msc).On the computer where the data file will be created, open the Local Security Policy application (secpol.msc).

  2. No painel esquerdo, expanda Políticas Locaise, em seguida, clique em Atribuição de Direitos de Usuário.In the left pane, expand Local Policies, and then click User Rights Assignment.

  3. No painel direito, clique duas vezes em Executar tarefas de manutenção de volume.In the right pane, double-click Perform volume maintenance tasks.

  4. Clique em Adicionar usuário ou grupo e adicione a conta que executa o serviço SQL Server.Click Add User or Group and add the account that runs the SQL Server service.

  5. Clique em Aplicare feche todas as caixas de diálogo Política de Segurança Local .Click Apply, and then close all Local Security Policy dialog boxes.

  6. Reinicie o serviço SQL Server.Restart the SQL Server service.

  7. Verifique o log de erros do SQL ServerSQL Server na inicialização.Check the SQL ServerSQL Server error log at startup.

    Aplica-se a: SQL ServerSQL Server (começando com o SQL Server 2012 (11.x)SQL Server 2012 (11.x) SP4, SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 e SQL Server 2016 (13.x)SQL Server 2016 (13.x) e posteriores).Applies to: SQL ServerSQL Server (Starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x) SP4, SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 and SQL Server 2016 (13.x)SQL Server 2016 (13.x) and later).

    1. Se a conta de inicialização de serviço do SQL ServerSQL Server tiver a concessão de SE_MANAGE_VOLUME_NAME, uma mensagem informativa semelhante à seguinte será registrada no log:If the SQL ServerSQL Server service startup account is granted SE_MANAGE_VOLUME_NAME, an informational message that resembles the following is logged:

      Database Instant File Initialization: enabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.

    2. Se a conta de inicialização de serviço do SQL ServerSQL Server não tiver a concessão de SE_MANAGE_VOLUME_NAME, uma mensagem informativa semelhante à seguinte será registrada no log:If the SQL ServerSQL Server service startup account has not been granted SE_MANAGE_VOLUME_NAME, an informational message that resembles the following is logged:

      Database Instant File Initialization: disabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.

    Observação

    Use também a coluna instant_file_initialization_enabled na DMV sys.dm_server_services para identificar se a inicialização instantânea de arquivo está habilitada.You can also use the column instant_file_initialization_enabled in the sys.dm_server_services DMV to identify if instant file initialization is enabled.

Considerações de segurançaSecurity considerations

É recomendável habilitar a inicialização instantânea de arquivo, pois os benefícios podem superar o risco à segurança.We recommend enabling instant file initialization as the benefits can outweigh the security risk.

Ao usar a inicialização instantânea de arquivo, o conteúdo de disco excluído será substituído apenas à medida que novos dados forem gravados nos arquivos.When using instant file initialization, the deleted disk content is overwritten only as new data is written to the files. Por esse motivo, o conteúdo excluído poderá ser acessado por uma entidade de segurança não autorizada, até que outros dados sejam gravados naquela área específica do arquivo de dados.For this reason, the deleted content might be accessed by an unauthorized principal, until some other data writes on that specific area of the data file.

Embora o arquivo de banco de dados esteja associado à instância do SQL ServerSQL Server, esse risco de divulgação de informações é reduzido pela DACL (lista de controle de acesso discricionário) no arquivo.While the database file is attached to the instance of SQL ServerSQL Server, this information disclosure risk is reduced by the discretionary access control list (DACL) on the file. Essa DACL permite acesso de arquivo somente à conta de serviço do SQL ServerSQL Server e ao administrador local.This DACL allows file access only to the SQL ServerSQL Server service account and the local administrator. Porém, quando o arquivo é desassociado, ele pode ser acessado por um usuário ou serviço que não tenha SE_MANAGE_VOLUME_NAME.However, when the file is detached, it may be accessed by a user or service that does not have SE_MANAGE_VOLUME_NAME.

Há considerações semelhantes quando:Similar considerations exist when:

  • É feito backup do banco de dados.The database is backed up. Se o arquivo de backup não estiver protegido com uma DACL adequada, o conteúdo excluído poderá ficar disponível para um usuário ou um serviço não autorizado.If the backup file is not protected with an appropriate DACL, the deleted content can become available to an unauthorized user or service.

  • Um arquivo é expandido usando a IFI.A file is grown using IFI. Um administrador do SQL Server pode, potencialmente, acessar o conteúdo da página bruta e ver o conteúdo excluído anteriormente.A SQL Server administrator could potentially access the raw page contents and see the previously deleted content.

  • Os arquivos do banco de dados são hospedados em uma rede de área de armazenamento.The database files are hosted on a storage area network. Também é possível que a rede de área de armazenamento apresente sempre novas páginas como pré-inicializadas e fazer com que o sistema operacional reinicialize as páginas poderá gerar uma sobrecarga desnecessária.It is also possible that the storage area network always presents new pages as pre-initialized, and having the operating system re-initialize the pages might be unnecessary overhead.

Se houver preocupação com a possível divulgação do conteúdo excluído, você deverá executar uma das seguintes ações ou ambas:If the potential for disclosing deleted content is a concern, you should take one or both of the following actions:

  • Sempre se certifique de que todos os arquivos de dados desassociados e arquivos de backup tenham DACL restritivas.Always make sure that any detached data files and backup files have restrictive DACLs.

  • Desabilite a inicialização instantânea de arquivo para a instância do SQL ServerSQL Server.Disable instant file initialization for the instance of SQL ServerSQL Server. Para fazer isso, revogue a SE_MANAGE_VOLUME_NAME da conta de inicialização do serviço SQL ServerSQL Server.To do so, revoke SE_MANAGE_VOLUME_NAME from the SQL ServerSQL Server service startup account.

    Observação

    Desabilitar aumentará os tempos de alocação para arquivos de dados e afetará apenas os arquivos que forem criados ou aumentados em tamanho após o direito do usuário ser revogado.Disabling will increase allocation times for data files, and only affects files that are created or increased in size after the user right is revoked.

Consulte TambémSee Also

CREATE DATABASE (SQL Server Transact-SQL)CREATE DATABASE (SQL Server Transact-SQL)