-
No processo de uso do SQL Server, frequentemente encontramos situações em que o log do banco de dados é muito grande. Ao encontrar esse problema, apresentamos dois métodos para resolvê-lo.
Método um
Em circunstâncias normais, reduzir um banco de dados SQL não pode reduzir muito o tamanho do banco de dados. Sua principal função é reduzir o tamanho do log. Esta operação deve ser executada regularmente para evitar que o log do banco de dados fique muito grande.
1. Defina o modo de banco de dados para modo simples: Abra o SQL Enterprise Manager, clique em Microsoft SQL Server no diretório raiz do console -> grupo SQL Server -> clique duas vezes para abrir seu servidor -> clique duas vezes para abrir o banco de dados diretório-->Selecione o nome do seu banco de dados (como Fórum de banco de dados Fórum)-->clique com o botão direito e selecione Propriedades-->Selecionar Opções-->Selecione "Simples" no modo de failover e pressione OK para salvar
2. Clique com o botão direito no banco de dados atual e visualize o banco de dados reduzido em todas as tarefas. Geralmente, as configurações padrão não precisam ser ajustadas.
3. Após reduzir o banco de dados, é recomendável redefinir as propriedades do banco de dados para o modo padrão. O método de operação é o mesmo do primeiro ponto, porque o log geralmente é uma base importante para restaurar o banco de dados em algumas circunstâncias anormais.
DEFINIR NOCOUNT ON
DECLARE @LogicalFileName nome do sistema,
@MaxMinutes INT,
@NewSizeINT
USE tablename -- o nome do banco de dados a ser operado
SELECT @LogicalFileName = 'tablename_log', -- nome do arquivo de log
@MaxMinutes = 10, -- Limite de tempo permitido para encerrar o log.
@NewSize = 1 – O tamanho do arquivo de log que você deseja definir (M)
--Configurar/inicializar
DECLARE @OriginalSize int
SELECIONE @OriginalSize = tamanho
DE arquivos sys
ONDE nome = @LogicalFileName
SELECT 'Tamanho original de ' + nome_bd() + ' LOG é ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K páginas ou ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
DE arquivos sys
ONDE nome = @LogicalFileName
CRIAR TABELA DummyTrans
(DummyColumn char (8000) não nulo)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECIONE @StartTime = GETDATE(),
@TruncLog = 'LOG DE BACKUP' + nome_bd() + 'COM TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Embrulhe o log, se necessário.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) – o tempo não expirou
AND @OriginalSize = (SELECIONE tamanho FROM sysfiles WHERE nome = @LogicalFileName)
E (@OriginalSize * 8/1024) > @NewSize
BEGIN – Loop externo.
SELECIONE @Contador = 0
ENQUANTO (@Counter < @OriginalSize / 16) E (@Counter < 50000))
COMEÇAR - atualizar
INSERIR VALORES DummyTrans ('Registro de Preenchimento')
EXCLUIR DummyTrans
SELECIONE @Contador = @Contador + 1
FIM
EXEC (@TruncLog)
FIM
SELECT 'Tamanho final de ' + nome_bd() + ' LOG é ' +
CONVERT(VARCHAR(30),tamanho) + ' 8K páginas ou ' +
CONVERT(VARCHAR(30),(tamanho*8/1024)) + 'MB'
DE arquivos sys
ONDE nome = @LogicalFileName
TABELA DE QUEDA DummyTrans
DEFINIR NOCOUNT OFF