CHECKPOINT (Transact-SQL)

Grava todas as páginas sujas do banco de dados atual em disco. Páginas sujas são páginas de dados que foram inseridas no cache do buffer e foram modificadas, mas ainda não foram gravadas em disco. Os pontos de verificação economizam tempo durante uma recuperação posterior, pois criam um ponto em que todas as páginas sujas são gravadas no disco.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

CHECKPOINT [ checkpoint_duration ]

Argumentos

  • checkpoint_duration
    Especifica o tempo solicitado em segundos para completar o ponto de verificação. Quando checkpoint_duration é especificado, o Mecanismo de banco de dados do SQL Server tenta executar o ponto de verificação dentro da duração solicitada. O checkpoint_duration deve ser uma expressão de tipo int e deve ser maior que zero. Quando esse parâmetro é omitido, o Mecanismo de banco de dados do SQL Server ajusta a duração de ponto de verificação automaticamente para minimizar o impacto de desempenho em aplicativos de banco de dados.

    ObservaçãoObservação

    No SQL Server 2000, o prazo para o processo de ponto de verificação era baseado na configuração sp_configure RECOVERY INTERVAL.

Comentários

Por razões de desempenho, o Mecanismo de Banco de Dados executa modificações nas páginas de banco de dados na memória e não grava a página em disco após cada alteração. No entanto, o Mecanismo de Banco de Dados precisa executar periodicamente um ponto de verificação para gravar estas páginas sujas em disco. Gravar páginas sujas em disco cria um ponto conhecido, do qual o Mecanismo de Banco de Dados pode iniciar a aplicação de alterações contidas no log durante a recuperação após um desligamento inesperado ou falha. Para obter mais informações, consulte Pontos de verificação e a parte ativa do log.

Os pontos de verificação podem ocorrer simultaneamente em qualquer número de bancos de dados.

O Mecanismo de Banco de Dados não pode ser recuperado a partir de um ponto de verificação suspenso. Se um ponto de verificação estiver suspenso e uma recuperação for solicitada, o Mecanismo de Banco de Dados deverá iniciar a recuperação a partir de um ponto de verificação anterior que tenha sido efetuado com sucesso.

Eventos que criam pontos de verificação

Antes de um backup de banco de dados, o Mecanismo de Banco de Dados executa um ponto de verificação automaticamente, de forma que todas as alterações nas páginas de banco de dados sejam gravadas no backup. Além disso, pontos de verificação ocorrem automaticamente na presença de uma das seguintes condições:

  • A porção ativa do log excede o tamanho que o servidor poderia recuperar no tempo especificado pela opção de configuração do servidor em recoveryinterval.

  • O log se torna 70% completo e o banco de dados está em modo de log truncado.

    Um banco de dados está em modo de log truncado quando essas duas condições forem TRUE: o banco de dados está usando o modelo de recuperação Simple e, após a execução da última instrução de BACKUP DATABASE que faz referência ao banco de dados, ocorre um dos seguintes eventos:

    • Uma operação de log mínimo é executada no banco de dados, como uma operação de cópia em massa em massa ou um instrução WRITETEXT com log mínimo é executada.

    • Uma instrução ALTER DATABASE é executada e adiciona ou exclui um arquivo no banco de dados.

Além disso, parar um servidor emite um ponto de verificação em cada banco de dados no servidor. Os seguintes métodos de parada de um servidor SQL Server executam pontos de verificação para cada banco de dados:

  • Uso do SQL Server Configuration Manager.

  • Uso do SQL Server Management Studio:

  • Uso da instrução SHUTDOWN.

ObservaçãoObservação

A instrução SHUTDOWN WITH NOWAIT desliga o SQL Server sem executar um ponto de verificação em cada banco de dados. Isto pode fazer com que a reinicialização subsequente leve mais tempo que o habitual para recuperar os bancos de dados no servidor.

  • Uso do comando net stop mssqlserver em uma janela de prompt de comando.

  • Uso de Serviços no Painel de Controle, selecionando mssqlserver e clicando em Parar.

  • Colocando uma instância offline em um cluster.

Fatores que afetam a duração de operações do ponto de verificação

Em geral, o tempo necessário para uma operação de ponto de verificação aumenta conforme o número de páginas sujas que a operação deve gravar. Para minimizar o impacto no desempenho de outros aplicativos, o SQL Server ajusta, por padrão, a frequência de gravação que uma operação de ponto de verificação executa. O SQL Server usa esta estratégia para pontos de verificação automáticos e para qualquer instrução CHECKPOINT que não especifique um valor checkpoint_duration. Diminuir a frequência de gravação aumenta o tempo que a operação de ponto de verificação exige para ser concluída.

Você pode usar checkpoint_duration para solicitar que a operação de ponto de verificação seja concluída dentro de um intervalo de tempo especificado. O impacto no desempenho ao usar checkpoint_duration depende do número de páginas sujas, da atividade do sistema e da duração atual especificada. Por exemplo, se o ponto de verificação normalmente é concluído em 120 segundos, especificar um checkpoint_duration de 45 segundos faz o SQL Server dedicar mais recursos ao ponto de verificação do que seria atribuído por padrão. No entanto, especificar um checkpoint_duration de 180 segundos faz o SQL Server atribuir menos recursos do que seria atribuído por padrão. Em geral, um checkpoint_duration curto aumentará os recursos dedicados ao ponto de verificação, enquanto um checkpoint_duration longo reduzirá os recursos dedicados ao ponto de verificação. O SQL Server sempre conclui um ponto de verificação, se possível, e a instrução CHECKPOINT é retornada imediatamente quando um ponto de verificação é concluído. Então, em alguns casos, um ponto de verificação pode ser concluído antes da duração especificada ou pode ser executado por mais tempo que a duração especificada.

Permissões

As permissões padrão de CHECKPOINT para membros da função de servidor fixa sysadmin e as funções de banco de dados fixas db_owner e db_backupoperator não são transferíveis.