AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 41215
Accepted
Navaneet
Navaneet
Asked: 2013-05-01 03:26:36 +0800 CST2013-05-01 03:26:36 +0800 CST 2013-05-01 03:26:36 +0800 CST

Reduzir o arquivo de log não reduz o tamanho

  • 772

Eu tenho um banco de dados que tem um arquivo de dados de 350 MB (.mdf) e um arquivo de log de 4,9 GB (.ldf). O modelo de recuperação é definido como FULL.

Quando tento reduzir o arquivo de log, ele não está diminuindo.

Eu sei que encolher um banco de dados não é bom e não deve ser feito. Mas ainda estou tentando fazer isso para reduzir o arquivo de log.

Quando eu corri

DBCC SQLPerf(logspace) 

Descobri que o tamanho do log é de 4932 MB e o espaço de log usado é de 98,76% !

Então eu tentei este comando

USE <databasename>;
DBCC loginfo;

Agora, quase todos os VLFs são "status 2", o que significa que todos estão em uso.

Tentei fazer um backup de log e, em seguida, reduzir o arquivo de log. O encolhimento não reduziu o tamanho.

Mudei o modelo de recuperação para SIMPLEe tentei diminuir novamente, mas isso também não ajudou.

Verifiquei se há transações abertas

DBCC opentran (database);

e descobri que nenhuma transação está aberta agora.

O que está me impedindo de reduzir o arquivo de log? Como posso resolver isso?

sql-server transaction-log
  • 6 6 respostas
  • 156110 Views

6 respostas

  • Voted
  1. Best Answer
    Navaneet
    2013-05-01T06:20:42+08:002013-05-01T06:20:42+08:00

    Aqui está a resposta à minha própria pergunta.

    Execute a consulta abaixo para obter informações sobre a espera de reutilização do arquivo de log:

    SELECT log_reuse_wait_desc
    FROM sys.databases
    WHERE name = 'DBName'
    

    Obtive a seguinte saída:

    log_reuse_wait_desc
    -------------------
    REPLICATION 
    

    Alguns objetos relacionados à replicação permaneceram no banco de dados, mesmo após a remoção da replicação.

    Para remover a replicação do banco de dados, sp_removedbreplicationpode ser usado. Mas não funcionou para nós, pois a replicação não estava ativa no momento e, na verdade, a replicação havia sido removida muito antes.

    A solução foi importar o conteúdo do banco de dados para outro banco de dados utilizando a opção de importação do SQL Server.

    • 18
  2. Remus Rusanu
    2013-05-01T05:07:42+08:002013-05-01T05:07:42+08:00

    Leia Como reduzir o log do SQL Server para obter uma explicação de como a natureza circular do log pode impedir a redução após o truncamento. É possível que você registre o último ponto LSN do LSN em um VLF que esteja na cauda do LDF. Contra intuitivamente, você deve avançar o log, gerando gravações de log, para permitir que ele diminua.

    • 12
  3. Cougar9000
    2013-05-01T05:12:08+08:002013-05-01T05:12:08+08:00

    As etapas para reduzir o log serão:

    Faça backup do log de transações por meio de SSMS ou T-SQL e, em seguida, execute uma redução.

    comandos para SSMS estão sob as tarefas se você clicar com o botão direito do mouse no nome do banco de dados.

    BACKUP LOG <Databasename> TO DISK = N'<path\database_log.ldf';
    GO
    
    DBCC SHRINKFILE (<FileName>, <TargetSize>) WITH NO_INFOMSGS
    

    Você provavelmente terá que fazer isso várias vezes.

    Se houver uma transação ou trabalho bloqueando a ação, use o Monitor de atividade para identificar o processo e eliminá-lo ou use o monitor de atividade do trabalho do SQL Agent para encerrar o trabalho.

    fonte: http://support.microsoft.com/kb/907511

    • 11
  4. SQL King
    2014-01-03T06:16:57+08:002014-01-03T06:16:57+08:00

    Descobri que preciso realizar 2 ou 3 backups do banco de dados e do log de transações para que o log de transações realmente reduza o tamanho. Eu tenho um banco de dados que foi criado com o modelo de recuperação completa. Todas as noites ele executa backups do banco de dados e do log de transações, mas inevitavelmente o log de transações parece crescer continuamente ao longo de 2-3 semanas. Quando o espaço em disco restante chegar a 1 GB, verei que o log de transações tem cerca de 30 GB. Eu segui as etapas recomendadas pela Microsoft e, após a 4ª ou 5ª iteração de backup do banco de dados e do log de transações, o log de transações finalmente liberará seu espaço extra e diminuirá. Então eu volto e excluo os vários backups que criei.

    • 2
  5. Toni Kostelac
    2013-05-01T04:26:11+08:002013-05-01T04:26:11+08:00

    Você precisa criar um backup primeiro, dependendo do modelo de backup configurado para o banco de dados, antes de poder reduzi-lo.

    Você pode tentar executar isso:

    USE <databasename>
    GO
    
    BACKUP DATABASE <databasename> TO DISK '<absolute path goes here>\<databasename>.bak';
    GO
    

    Ou você pode fazer isso no SSMS e usar as ferramentas gráficas disponíveis (consulte aqui para obter detalhes: http://msdn.microsoft.com/en-us/library/ms187510.aspx )

    Depois de fazer backup de seu banco de dados, você pode compactá-lo. No entanto, reduzir o banco de dados não é uma boa ideia, pois ocorrerá uma grande fragmentação do índice e a pesquisa de dados ficará lenta.

    Espero que isto ajude.

    • 0
  6. mecool
    2015-09-01T00:16:57+08:002015-09-01T00:16:57+08:00

    Minha solução para a replicação que está bloqueando o arquivo de log de redução é:

    1. Definir modelo de recuperação de banco de dados como simples
    2. Colocar banco de dados offline
    3. Criar backup do arquivo de log (apenas no caso)
    4. Excluir arquivo de registro
    5. Coloque o DB online

    No meu caso funcionou. Depois de trazer o banco de dados online, o log foi criado automaticamente e seu tamanho era de 512kb em vez de 70GB. Mas esta é apenas uma solução alternativa. O problema raiz não foi resolvido. No meu caso estamos usando replicação.

    • -10

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve