Sintomas

Quando você inicia uma instância do Microsoft SQL Server ou restaurar ou anexar um banco de dados, uma mensagem informativa 9017 semelhante à seguinte é registrada no log de erros do SQL Server:

Banco de dados dbName tem mais de n virtual arquivos de log que é excessiva. Muitos arquivos de log virtuais podem causar inicialização longa e os tempos de backup. Considere reduzir o log e usando um incremento de crescimento diferentes para reduzir o número de arquivos de log virtuais.
Muitos arquivos de log virtuais podem afetar o tempo de recuperação do banco de dados.

Além disso, se você usar as tecnologias de replicação ou espelhamento de banco de dados em seu ambiente, você pode perceber problemas de desempenho com essas tecnologias.

Causa

Esse problema ocorre quando você especifica valores pequenos para o parâmetro FILEGROWTH para o arquivo de log.

O mecanismo de banco de dados do SQL Server divide cada arquivo de log físico internamente em vários arquivos de log virtuais (VLFs). SQL Server 2008 R2 Service Pack 2 e posterior introduziu uma nova mensagem (9017) que será registrada quando um banco de dados é iniciado (devido a partir de uma instância do SQL Server ou devido a anexação ou restauração do banco de dados) e tem mais de 1.000 VLFs no SQL Server 2008 R2 ou tem mais de 10.000 VLFS no SQL Server 2012.

Observação: No SQL Server 2012, embora essa mensagem é registrada quando o banco tiver 10.000 VLFs, a mensagem real é relatada no log de erros incorretamente afirma "1000 VLF." Basicamente, o aviso ocorre após 10.000 VLFs. No entanto, a mensagem informa 1.000 VLFs. Esse problema será corrigido em uma versão futura.

Para obter mais informações sobre como o aumento do número de VLFs pode causar problemas de desempenho na replicação ou configurações de espelhamento de banco de dados, consulte a seção "Mais informações".

Resolução

Para resolver esse problema, execute as seguintes etapas:

  1. Reduza seu log de transações usando o DBCC SHRINKDB ou usando o SQL Server Management Studio.

  2. Aumente o tamanho do arquivo de log de transação para um valor maior para evitar crescimentos automática frequente. Para obter mais informações, consulte o tópico a seguir no site do Books Online do SQL Server:

    http://msdn.microsoft.com/en-us/library/ms365418.aspx#AddOrEnlarge

  3. Aumente o parâmetro FILEGROWTH para um valor maior do que o que está atualmente configurado. Isso deve se basear na atividade de banco de dados e com que frequência o arquivo de log está crescendo.


Além disso, recomendamos que você considere as seguintes correções, dependendo da versão do SQL Server que você está executando a instalação:

CORREÇÃO: Leva muito tempo para restaurar um banco de dados no SQL Server 2008 R2, SQL Server 2008 ou SQL Server 2012

CORREÇÃO: Desempenho lento quando você recuperar um banco de dados se houver muitos VLFs dentro do log de transação no SQL Server 2005, SQL Server 2008 ou SQL Server 2008 R2

CORREÇÃO: O banco de dados principal não é recuperado se o banco de dados tiver um grande número de arquivos de log virtuais do SQL Server 2005 ou SQL Server 2008

CORREÇÃO: Recuperação demora mais que o esperado para um banco de dados em um ambiente SQL Server 2008 ou SQL Server 2008 R2


Mais informações

Como verificar o número de segmentos VLF em um banco de dados

Você encontrará o número de segmentos VLF, localizando a diferença entre o primeiro e os últimas números de sequência de log (LSNs) dos backups de log de transação do banco de dados em um banco de dados.

Você pode encontrar o LSN do backup de log de transação, verificando o log de erros do SQL Server para uma mensagem semelhante à seguinte:

{Log foi feito backup. Banco de dados: mydbname, creation_date_(time): Data(hora), primeiro LSN: 1: 5068:70, último LSN: 1: 5108:1, número de dispositivos de despejo: 1, informações do dispositivo: (arquivo = 1, tipo = DISK: {'C:\folder\logbackup1.trn'}). Isso é apenas uma mensagem informativa. Nenhuma ação é necessária.


Observação: Nesta mensagem, o LSN do log de transação é 1. (É o primeiro número antes da primeira vírgula em "LSN: 1:5068:70.")

Para fazer isso, execute as seguintes etapas:

  1. Localizar o LSN para o primeiro backup de log de transação do banco de dados no seu log de erros do SQL (por exemplo, LSN: 1:5108:1).

  2. Encontrar o LSN mais recente para o backup de log de transação no log de erros do SQL (por exemplo, LSN:10, 235: 5108: 1).

  3. O número de segmentos VLF é a diferença entre o LSN mais recente e o LSN mais antigo (nesse caso, é 10,235-1 = 10,234).


O efeito de muita VLFs na replicação

Muitos arquivos de log podem afetar a replicação porque o processo do leitor de log deve verificar todos os arquivos de log virtuais para transações marcadas para replicação. Você pode ver esse comportamento rastreando o desempenho do procedimento sp_replcmds armazenados. O leitor de log processo usa a sp_replcmds armazenados procedimento para examinar os arquivos de log virtuais e ler as transações marcadas para replicação. Para obter mais informações, clique no número de artigo a seguir para visualizar o artigo na Base de Dados de Conhecimento da Microsoft:

949523 a latência de uma replicação transacional é alta no SQL Server 2005 quando o valor da propriedade "Tamanho inicial" e o valor da propriedade Autogrowth são pequenos

O efeito de muita VLFs no espelhamento de banco de dados

Muitos arquivos de log também podem afetar o espelhamento de banco de dados. Para obter mais informações, clique no número de artigo a seguir para visualizar o artigo na Base de Dados de Conhecimento da Microsoft:

Corrigir 2455009 : desempenho lento quando você recuperar um banco de dados se houver muitos VLFs dentro do log de transação no SQL Server 2005, SQL Server 2008 ou SQL Server 2008 R2

Referências

Para obter mais informações, consulte os seguintes tópicos no site da Microsoft Developer Network (MSDN):

Reduzindo o Log de transações

Fatores que podem atrasar o truncamento do Log

Truncamento de Log de transação

Arquitetura lógica do Log de transação

Arquitetura física de Log de transação


Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Microsoft Insider

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?

Obrigado pelos seus comentários!

×