none
Backup SQL 2008 cada dia fica maior RRS feed

  • Pergunta

  • Faço backup de todo conteudo do banco de dados com seguinte sintaxe:

    SQLCMD -S 10.1.1.253 -U sa -P S@123 -i c:\admin\backup.sql

    a cada dia backup do banco principal aumenta consideravelmente.

    Alguem pode me ajudar ?

    Agardeço


    Neto, Elias M S IT Services Blumenau/SC

    terça-feira, 16 de julho de 2013 12:03

Respostas

  • O procedimento mais seguro é o que te falei, onde somente o serviço do SQL Server será reiniciado. Não é um conjunto de serviços, é o serviço do SQL Server e do SQL Server Agent. Ambos estão na lista de serviços do Windows (execute services.msc pra acessar os serviços).

    Reiniciar o servidor pode finalizar os processos do SQL de forma forçada, o que pode aumentar o tempo de indisponibilidade.


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 23 de julho de 2013 19:51
    Moderador
  • NA verdade o que ocorre é seu backup esta em modo append, ou seja a cada backup ele guarda os anteriores no mesmo arquivo. Isso é padrao do comando de backup

    O comando deve prever o o atributo INIT, desta maneira:

    BACKUP DATABASE BANCO TO DISK = 'C:\BACKUP.BAK' WITH COMPRESSION, INIT

    Fonte:http://www.dotnetfunda.com/articles/article1140-backup-compression-sql-server-2008.aspx

    e 

    http://msdn.microsoft.com/en-us/library/ms186865.aspx

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 14:52
  • DECLARE @name VARCHAR(50) -- database name  
    DECLARE @path VARCHAR(256) -- path for backup files  
    DECLARE @fileName VARCHAR(256) -- filename for backup  
    DECLARE @fileDate VARCHAR(20) -- used for file name 
    
    SET @path = 'd:\backup\'  
    
    SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 
    
    DECLARE db_cursor CURSOR FOR  
    SELECT name 
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb')  
    
    OPEN db_cursor   
    FETCH NEXT FROM db_cursor INTO @name   
    
    WHILE @@FETCH_STATUS = 0   
    BEGIN   
           SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
           BACKUP DATABASE @name TO DISK = @fileName WITH COMPRESSION
    
           FETCH NEXT FROM db_cursor INTO @name   
    END   
    
    CLOSE db_cursor   
    DEALLOCATE db_cursor 
    Neste caso ele apenas irá alocar varios em um unico arquivo se for do mesmo dia, pois você cria um arquivo por dia (pelo que vi no script). Se for o sql enterprise incluiu o WITH COMPRESSION que ira compact de uma forma razoável porem o backup irá demorar um pouco mais.
    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 18:41
  • Eu faria o seguinte:

    • Alteraria o backup para Full.
    • Faria um Backup do Banco e outro do Log (No do log with init).
    • Alteraria o tamanho do Log para 30% do tamanho do Banco
    • Retiraria o FileGrowth do Log.

    Assim você não teria mais problema com tamanho e teria mais opções de restauração como por exemplo até uma hora especifica.

    A utilização do shrink cria muitos fragmentos no banco de dados, de principio não da problemas mais dependendo do tamanho do banco e de quantos fragmentos ele criou pode perder desempenho.


    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quinta-feira, 18 de julho de 2013 12:58
  • Executei:

    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = N'D:\Backup\Sapiens_Prod_log.bak'
    GO
    DBCC SHRINKFILE (N'Sapiens_PROD_Log' , 0, TRUNCATEONLY)
    GO

    Seguinte erro:

    Msg 4208, Level 16, State 1, Line 1
    The statement BACKUP LOG is not allowed while the recovery model is SIMPLE. Use BACKUP DATABASE or change the recovery model using ALTER DATABASE.
    Msg 3013, Level 16, State 1, Line 1
    BACKUP LOG is terminating abnormally.
    Msg 102, Level 15, State 1, Line 1
    Incorrect syntax near 'GO'.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quinta-feira, 18 de julho de 2013 23:42
  • Caro Elias,

    Sua base está com o Recovery em modo Simple, portanto, a cada checkpoint o Transaction Log é truncado. O que vai junto com o backup full é o tail do log, ou seja, só aquelas transações entre o último checkpoint e o momento do backup.

    O comando abaixo retorna o status e o tamanho de todos os arquivos de TLog:

    DBCC SQLPERF(logspace)

    Assim, vamos saber se realmente os TLogs estão vazios. O que pode estar acontecendo é que como o arquivo cresceu bastante a quantidade de VLFs aumentou muito. O TLog é circular e dependendo do autogrowth pode estar bem fragmentado.

    http://sqldicas.com.br/dicas/arquitetura-do-transaction-log/

    Fico no aguardo do seu retorno pra prosseguirmos com a análise.

    Abs,


    Luiz Mercante - MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003 | sqldicas@outlook.com | http://sqldicas.com.br | Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.



    sexta-feira, 19 de julho de 2013 01:31
    Moderador
  • Mercante a pedido: segue...


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    sexta-feira, 19 de julho de 2013 11:11
  • Bom dia Elias.

    Viu como o Log do seu banco Sapiens_PROD está cheio? Com o TLog cheio não é possível fazer shrink do arquivo, liberando seu espaço pro Sistema Operacional.

    Vamos voltar o recovery model para Full, assim podemos fazer o backup do TLog. Desta forma, ele é truncado (esvaziado) e aí sim podemos liberar o espaço.

    ALTER DATABASE Sapiens_PROD SET RECOVERY FULL

    Agora vamos fazer o backup do Transaction Log. Em muitos casos, devido a utilização da base, é necessário executar algumas vezes para que o TLog seja truncado corretamente. Faça o backup umas 3x seguidas:

    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    Por último, rode um backup junto com o Shrink, para já fazer o shrink logo após o backup:

    use [Sapiens_PROD] GO BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    GO

    DBCC SHRINKFILE ('Sapiens_PROD_Log' , 1024)
    GO


    Depois coloque a base novamente em SIMPLE:

    ALTER DATABASE SApiens_PROD SET RECOVERY SIMPLE

    E rode o DBCC SQLPERF(logspace) novamente.

    Abs,


    Luiz Mercante - MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003 | sqldicas@outlook.com | http://sqldicas.com.br | Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.


    sexta-feira, 19 de julho de 2013 11:41
    Moderador
  • Luiz executei este que me foi enviado:

    DECLARE @NomeBD AS VARCHAR(256);
    SET @NomeBD = DB_NAME();

    EXEC('ALTER DATABASE ['+ @NomeBD + '] SET RECOVERY SIMPLE');
    EXEC('ALTER DATABASE ['+ @NomeBD + '] SET RECOVERY FULL');
    GO

    DECLARE @Arquivos AS TABLE (Nome VARCHAR(256));
    DECLARE @Nome AS VARCHAR(256);
    INSERT INTO @Arquivos (Nome) (SELECT rtrim(name) FROM sysfiles);
    WHILE EXISTS (SELECT Nome FROM @Arquivos)
    BEGIN
    SELECT @Nome = Nome FROM @Arquivos;
    EXEC('DBCC SHRINKFILE (' + @Nome + ')');
    DELETE FROM @Arquivos WHERE Nome = @Nome;
    END

     Log do Sapiens_prod abaixou.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    segunda-feira, 22 de julho de 2013 21:32
  • Elias,

    Precisamos fazer um backup full da base depois de mudar o recovery para Full, como foi feito no script que você executou.

    BACKUP DATABASE Sapiens_PROD to disk 'D:\caminho_que_vc_quiser\backup.bak'

    Depois vai funcionar:

    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    use [Sapiens_PROD] GO BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    GO

    DBCC SHRINKFILE ('Sapiens_PROD_Log' , 1024)
    GO

    ALTER DATABASE SApiens_PROD SET RECOVERY SIMPLE

    Não esqueça do DBCC SQLPERF(logspace)

    Fico no aguardo.


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    segunda-feira, 22 de julho de 2013 22:01
    Moderador
  • Elias,

    No momento que te passei os comandos, sua base estava com o recovery model em Full mas agora está em Simple.

    Vou colocar o passo a passo aqui novamente:

    ALTER DATABASE SApiens_PROD SET RECOVERY FULL

    BACKUP DATABASE Sapiens_PROD to disk = 'D:\caminho_que_vc_quiser\backup.bak'


    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    use [Sapiens_PROD] GO BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    GO

    DBCC SHRINKFILE ('Sapiens_PROD_Log' , 1024)
    GO

    ALTER DATABASE SApiens_PROD SET RECOVERY SIMPLE

    Não esqueça do DBCC SQLPERF(logspace)


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 23 de julho de 2013 17:08
    Moderador
  • Caro Elias,

    Não há do que se desculpar, estamos aqui para ajudá-lo. Porém, tendo em vista que você tem muito pouco conhecimento em SQL Server, sugiro que seja acompanhado por um profissional. Em muitos casos onde a instância é reiniciada, pode não iniciar corretamente, pode ter ajustes para fazer, pode ter configuração ou aplicação de patch que ficou pendente de reiniciar a instância, deixando suas bases fora.

    Para reiniciar a instância, basta clicar lá em cima no TECNOSERVER\SQLEXPRESS (SQL Server 10.50.1600 - tecnofogos) com o botão direito e clicar em restart, mas fica por sua conta e risco. Se correr tudo bem, ela vai parar (as bases ficarão fora) e em alguns segundo vai voltar a ficar verde.

    Abs,


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 23 de julho de 2013 19:21
    Moderador
  • O mesmo pode ser feito reiniciando o servico atraves do painel de controle> serviços, ou no pior caso, reiniciando o windows (em ultimo caso)

    Mas a forma mais comum é fazer o que o Luiz sugeriu.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée


    terça-feira, 23 de julho de 2013 19:32
  • Que boa notícia Elias.

    Podemos fazer o mesmo procedimento na base de Dev, basta alterar o nome da base e do arquivo.

    Por favor, veja agora o tamanho do backup de hoje para amanhã que é o motivo do seu thread. Penso que tínhamos alguma transação presa, utilizando grande parte do TLog, e que agora vai ser resolvido.

    Por gentileza, retorna pra nós e marque as respostas úteis como resposta da thread caso o problema tenha sido resolvido.

    Obrigado.


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:45
    quarta-feira, 24 de julho de 2013 22:33
    Moderador
  • Ok Elias. Realmente havia uma transaçao que bloqueava o processo normal de compressao (shrink)

    Eu creio que vc deva marcar somente a reposta que mais te ajudou, que na minha opiniao foi do Luiz Mercante, em especial esta aqui:

    "

    Vou colocar o passo a passo aqui novamente:

    ALTER DATABASE SApiens_PROD SET RECOVERY FULL
    GO
    BACKUP DATABASE Sapiens_PROD to disk = 'D:\caminho_que_vc_quiser\backup.bak'
    GO
    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'
    
    GO
    
    DBCC SHRINKFILE ('Sapiens_PROD_Log' , 1024)
    GO
    ALTER DATABASE SApiens_PROD SET RECOVERY SIMPLE

    Não esqueça do DBCC SQLPERF(logspace)

    "

    É importante marcar somente a correta para que em futuras pesquisas outros usuarios saibam qual foi a soluçao... Marcar como respostas perguntas ou comentarios (mesmo que pertinentes) nao ajudam.

    Grato pela atençao


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée


    quinta-feira, 25 de julho de 2013 13:02
  • Tenta fazer assim:

    BACKUP DATABASE BANCO TO DISK = 'C:\BACKUP.BAK'

    Se for o SQL Enterprise:

    BACKUP DATABASE BANCO TO DISK = 'C:\BACKUP.BAK' WITH COMPRESSION

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:47
    terça-feira, 16 de julho de 2013 14:18
  • Se for 2008 R2 qual melhor sintaxe do script para backup ?

    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:47
    terça-feira, 16 de julho de 2013 14:33
  • Willian,  estou pegando a logica que herdei aqui.

    Pessoa anterior criou:

    1) Rotina para chamar script backup e compactar os arquivos:

    SQLCMD -S 10.1.1.253 -U sa -P S@123 -i c:\admin\backup.sql

    REM Captura data do sistema
    For /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set mydate=%%c%%b%%a)
    For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)

    REM Cria Arquivo .RAR 
    c:\admin\rar.exe a -r D:\BACKUP\"%mydate%_%mytime%_BASES.RAR" D:\BACKUP\*.BAK 
    cd /d D:\BACKUP\

    REM Deleta arquivos Temporarios  
    cd /d %temp%
    cd /d D:\BACKUP\
    del /q /s /f *.BAK
    exit

    ---------------------------Ao terminar este comando  acima inicia-se este script SQL abaixo:

    DECLARE @name VARCHAR(50) -- database name  
    DECLARE @path VARCHAR(256) -- path for backup files  
    DECLARE @fileName VARCHAR(256) -- filename for backup  
    DECLARE @fileDate VARCHAR(20) -- used for file name 

    SET @path = 'd:\backup\'  

    SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 

    DECLARE db_cursor CURSOR FOR  
    SELECT name 
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb')  

    OPEN db_cursor   
    FETCH NEXT FROM db_cursor INTO @name   

    WHILE @@FETCH_STATUS = 0   
    BEGIN   
           SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
           BACKUP DATABASE @name TO DISK = @fileName  

           FETCH NEXT FROM db_cursor INTO @name   
    END   

    CLOSE db_cursor   
    DEALLOCATE db_cursor  

    Pergunta é onde insiro

    sintaxe:

    WITH COMPRESSION, INIT no script em SQL ?

    Agradeço a ajuda, pois tentei algumas maneiras não deu certo.

    Abraços.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 16:38
  • Voce pode listar o que tem dentro do arquivo:

    c:\admin\backup.sql?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 17:10
  • Claro .... estava citado no forum acima, mais esta abaixo novamente:

    ---------inicio---------------------

    DECLARE @name VARCHAR(50) -- database name  
    DECLARE @path VARCHAR(256) -- path for backup files  
    DECLARE @fileName VARCHAR(256) -- filename for backup  
    DECLARE @fileDate VARCHAR(20) -- used for file name 

    SET @path = 'd:\backup\'  

    SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 

    DECLARE db_cursor CURSOR FOR  
    SELECT name 
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb')  

    OPEN db_cursor   
    FETCH NEXT FROM db_cursor INTO @name   

    WHILE @@FETCH_STATUS = 0   
    BEGIN   
           SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
           BACKUP DATABASE @name TO DISK = @fileName  

           FETCH NEXT FROM db_cursor INTO @name   
    END   

    CLOSE db_cursor   
    DEALLOCATE db_cursor 

    ------------------- Fim ----------------------


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 17:14
  • Ok.. eu nao tinha certeza se o script SQL era o mesmo contido dentro de c:\admin\backup.sql?

    Entao, o que vc tem que alterar é

    BACKUP DATABASE @name TO DISK = @fileName  

    para 

    BACKUP DATABASE @name TO DISK = @fileName  WITH COMPRESSION, INIT


    Mas analisando agora eu creio que o problema possa ser outro..

    Dependendo do recoverymodel, o SQL guarda o log de transaçoes.. Isso te permite, por exemplo, recuperar os ultimos 15 minutos de atividades do banco... mas se vc nao precisa esse nivel de segurança, sugiro voce setar o recoveryModel para Simple ao inves de Full

    http://www.databasejournal.com/features/mssql/article.php/3782401/SQL-Server-2008-Recovery-Models-and-Backups.htm


    Com isso seu arquivo de backup ja ficara menor...

    Se vc quiser manter full, entao vc sera obrigado a fezer um backup de log (pelo menos 4 vezes ao dia) para que ele fique pequeno... Recomendo isso somente se vc precisar recuperar informaçoes parciais durante o dia.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 18:37
  • DECLARE @name VARCHAR(50) -- database name  
    DECLARE @path VARCHAR(256) -- path for backup files  
    DECLARE @fileName VARCHAR(256) -- filename for backup  
    DECLARE @fileDate VARCHAR(20) -- used for file name 
    
    SET @path = 'd:\backup\'  
    
    SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 
    
    DECLARE db_cursor CURSOR FOR  
    SELECT name 
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb')  
    
    OPEN db_cursor   
    FETCH NEXT FROM db_cursor INTO @name   
    
    WHILE @@FETCH_STATUS = 0   
    BEGIN   
           SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
           BACKUP DATABASE @name TO DISK = @fileName WITH COMPRESSION
    
           FETCH NEXT FROM db_cursor INTO @name   
    END   
    
    CLOSE db_cursor   
    DEALLOCATE db_cursor 
    Neste caso ele apenas irá alocar varios em um unico arquivo se for do mesmo dia, pois você cria um arquivo por dia (pelo que vi no script). Se for o sql enterprise incluiu o WITH COMPRESSION que ira compact de uma forma razoável porem o backup irá demorar um pouco mais.
    Você poderia colocar todos os backups em um único arquivo utilizando o with compression, assim você não precisaria usar o WinRAR para compactalos.
    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 18:43
  • 1-Estou testando backup com sua primeira sugestão. 

    2-É um backup agendado, roda as 23:00 todos os dias.

    Não tem necessidade de recuperação parcial.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 18:45
  • Willian,

    Veja anexo, versão diferente SQL em sua tela. Não tem a opção mencionada 

    Aqui 2008 R2


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 19:32
  • Expanda o Databases... Ache a sua base e depois clique com o botao direito (secundario) do mouse.. Vai aparecer um menu e uma das opcoes  é propriedades.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 19:41
  • Caro Elias,

    Para mudar o tipo de recovery da base clique em "New Query" e execute:

    ALTER DATABASE nomedasuabase SET RECOVERY SIMPLE

    Desta forma, você deixará de ter um problema futuro com seu transaction log, mas só poderá restaurar a base dos arquivos de backup.

    Já em relação ao backup, está crescendo diariamente porque dentro do arquivo estão acumulando vários backups, ou seja, está fazendo append. Para resolver o problema, utilize WITH INIT na linha que executa o backup. De acordo com o print que você enviou, pela nomenclatura da instância, é possível que você esteja utilizando o SQL 2008 R2 Express, confere?

    Para saber, abra uma nova query e execute:

     SELECT @@version

    Se for Express, deixe a linha do backup assim:

    BACKUP DATABASE @name TO DISK = @fileName WITH INIT

    Se for Standard, Enterprise ou Datacenter, deixe assim:

    BACKUP DATABASE @name TO DISK = @fileName WITH INIT, COMPRESSION

    O WITH INIT fará com que o backup seja substituído ao invés de anexado ao arquivo enquanto o COMPRESSION vai compactá-lo, ajudando a reduzir o tamanho.

    Ficou mais alguma dúvida?


    <p><b>Luiz Mercante</b><br/> MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003 <br/> <a href="mailto:sqldicas@outlook.com">sqldicas@outlook.com</a><br/> <a href="http://www.sqldicas.com.br" target="_blank">http://sqldicas.com.br</a></p> <br/> Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 16 de julho de 2013 19:55
    Moderador
  • Versão do banco

    Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)   Apr  2 2010 15:48:46   Copyright (c) Microsoft Corporation  Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) 


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 20:01
  • Quando vc diz que o backup da base de produ]cao tem 10GB, vc diz que cada aquivo gerado possui 10GB?

    Voce tem certeza que em producao a base esta setada para Simple Recovery?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 20:04
  • Willian, 10.786 GB acabei de rodar.

    Para ser sincero achei esta configuração.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 20:10
  • Elias, qual o tamanho da base? Quanto este backup cresce diariamente? Este arquivo de 10GB quando compactado pelo Winrar fica menor?

    Abs.


    Luiz Mercante - MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003 | sqldicas@outlook.com | http://sqldicas.com.br | Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    quarta-feira, 17 de julho de 2013 11:21
    Moderador
  • Isso foi herdado de outro TI

    Compactado com aplicativo rar.exe 

    tamanho e data em ordem crescente, não consigo fazer parar de aumentar.

    Ja estudei um pouco de tudo

    10/07/2013  23:53       655.304.161 20130710_2348_BASES.RAR
    12/07/2013  00:06       697.850.380 20130712_0002_BASES.RAR
    15/07/2013  09:48       740.328.090 20130713_0002_BASES.RAR
    14/07/2013  00:22       783.080.377 20130714_0017_BASES.RAR
    14/07/2013  23:58       819.831.976 20130714_2353_BASES.RAR
    16/07/2013  00:16       866.191.529 20130716_0010_BASES.RAR
    16/07/2013  17:09       898.724.773 20130716_1704_BASES.RAR
    17/07/2013  00:09       913.451.236 20130717_0003_BASES.RAR


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 11:32
  • Verifique o diretorio DATA.. Lá voce vai encontrar os dois arquivos que compoem a sua base: um .MDF e um .LDF

    Veja o tamanho de cada um deles. Poste aqui, se possivel, um screenshot da tela do windows explorer.

    Ainda creio que seja o arquivo LDF que nao esteja sendo truncado.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 11:51
  • Voce pode mandar um screenshot da pasta onde os arquivos estao sendo gerados?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 12:07
  • Segue Screm sã pastas diferentes:


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 12:14
  • Isso confirma o que eu disse... Seus arquivos de log nao estao sendo truncados.

    Para isso proceda da seguinte forma:

    1- Primeiro vc tem que pegar o nome do log (ou logs) do banco de dados. Clique como botao direito e veja propriedades, depois va em files. La voce vai ver o nome do log(veja a imagem abaixo onde eu indico)

    Com esse nome, execute a seguinte query:

    USE [sc_prod]
    GO
    DBCC SHRINKFILE (N'sc_prod_Log' , 0, TRUNCATEONLY)
    GO
    

    No seu caso, substitua o 'sc_prod' por Sapiens_PROD e sc_prod_log pelo nome que vc encontra na janela de propriedades da db, que caso voce tenha usado o padrao, deve ser "Sapiens_PROD_Log"

    Faça um backup depois disso e verifique o tamanho.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 13:31
  • Willian, recapitulando para não fazer nada errado:

    USE [sc_prod]
    GO
    DBCC SHRINKFILE (N'

    Sapiens_PROD_Log

    ' , 0, TRUNCATEONLY)

    GO


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 14:00
  • Troque o

    USE [sc_prod]

    por

    USE [Sapiens_prod]

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 14:13
  • William, testei agora depois do almoço

    fiz seu passo a passo

    mais não deu certo.

    backup continua crescendo crescendo....

    De qualquer modo agradeço sua grande ajuda.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 18:16
  • O que vc obteve como reotrno apos o comando:

    DBCC SHRINKFILE (N'Sapiens_PROD_Log' , 0, TRUNCATEONLY) ?

    Voce verificou se o arquivo de log diminuiu?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 20:08
  • Willian,

    desculpa acho que passei batido.

     eu executei script, mais não observei no diretorio o tamanho do arquivo de log(s).

    Pergunto posso executar script novamente colher resultado dele e enviar os tamanhos dos logs antes e depois ?

    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 20:22
  • Sim.. esse comando pode ser executato varias vezes.. a unica recomendaçao é que se faça quando todo mundo estiver fora do sistema.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 20:24
  • ok. Willian,

    Vou executar apos as 18:00 e posto resultados antes e depois 


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 20:26
  • Execução. Anexo na sequencia:


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 21:46

  • Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 21:48
  • Ok.. Vamos tentar outra coisa

    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = N'D:\Backup\Sapiens_Prod_log.bak'
    GO
    DBCC SHRINKFILE (N'Sapiens_PROD_Log' , 0, TRUNCATEONLY)
    GO

    FONTE:http://stackoverflow.com/questions/646845/sql-server-2008-log-will-not-truncate-driving-me-crazy

    Isso força um backup de log, que na pratica cria um novo chekpoint. 

    O arquivo .BAK gerado apos esse comando pode ser deletado sem problemas.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée



    quinta-feira, 18 de julho de 2013 12:18
  • Willian

    vou fazer , entretanto no intervalo de almoço pois tenho que desconectar bando do aplicativo

    agradeço


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quinta-feira, 18 de julho de 2013 13:49
  • Ok. Mercante.

    Script serão gerados no intervalo do almoço depois lhe passo resultados.

    Abraços, agardeço.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    sexta-feira, 19 de julho de 2013 11:43
  • Caro Elias,

    Foi possível executar os procedimentos recomendados?

    Abs,


    Luiz Mercante - MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003 | sqldicas@outlook.com | http://sqldicas.com.br | Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    segunda-feira, 22 de julho de 2013 12:17
    Moderador
  • Luiz, Bom Dia!


    Minha sexta feira foi agitada aqui.

    Para rodar isso preciso parar todo erp

    Tem rotinas web services que utilizam o banco, para isso preciso parar todos os serviços.

    Farei ainda hoje.

    Agradeço.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    segunda-feira, 22 de julho de 2013 13:09
  • passo -1

    ALTER DATABASE Sapiens_PROD SET RECOVERY FULL

    Exito

    ---------------------------

    Passo 2

    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    erro:

    Msg 4214, Level 16, State 1, Line 1
    BACKUP LOG cannot be performed because there is no current database backup.
    Msg 3013, Level 16, State 1, Line 1
    BACKUP LOG is terminating abnormally.

    ----------------------------------


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    segunda-feira, 22 de julho de 2013 21:17
  • Essa Mensagem.. tem algo errado com sintaxe:

    Precisamos fazer um backup full da base depois de mudar o recovery para Full, como foi feito no script que você executou.

    BACKUP DATABASE Sapiens_PROD to disk 'D:\caminho_que_vc_quiser\backup.bak'

    --->> BACKUP DATABASE Sapiens_PROD to disk 'D:\Backup\backup.bak'

    Msg 102, Level 15, State 1, Line 1
    Incorrect syntax near 'd:\BACKUP\backup.bak'.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    terça-feira, 23 de julho de 2013 12:44
  • Desculpe, faltou um sinal de igual:

    BACKUP DATABASE Sapiens_PROD to disk = 'D:\caminho_que_vc_quiser\backup.bak'


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    terça-feira, 23 de julho de 2013 15:25
    Moderador
  • Executado na ordem:

    DATABASE SApiens_PROD EM  FULL

    -- BAckup ok

     
    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    Msg 4208, Level 16, State 1, Line 1
    The statement BACKUP LOG is not allowed while the recovery model is SIMPLE. Use BACKUP DATABASE or change the recovery model using ALTER DATABASE.
    Msg 3013, Level 16, State 1, Line 1
    BACKUP LOG is terminating abnormally.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    terça-feira, 23 de julho de 2013 16:31
  • Luiz, Agradeço sua ajuda.

    Mais em sua orientação, se você olhar acima meu ultimo comentário:

    a base estava em base estava com o recovery model DATABASE SApiens_PROD EM  FULL, tive cuidado em seta-la antes de executar seu passo a passo.

    tudo bem..

    Vou executar na ordem sua acima tudo novamente.

    Abraços.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    terça-feira, 23 de julho de 2013 17:48
  • Elias,

    Então estou pensando aqui que existe algum erro não identificado justamente na parte de Recovery Model. Existe a possibilidade de reiniciar a instância e depois executar o procedimento?


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 23 de julho de 2013 18:40
    Moderador
  • Luiz, Desculpe a minha ignorância e despreparo, 

    Posso reiniciar a instancia do BD, você poderia dizer como faze-lo ?

    Caso não queira, entendendo perfeitamente.

    Agradeço.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    terça-feira, 23 de julho de 2013 18:45
  • Procedimento de restart do servidor acho mais seguro.

    Tenho certeza que serviços subirão todos.

    Posso usar isso como restart do BD ?


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    terça-feira, 23 de julho de 2013 19:41
  • Luiz, Fiz todos procedimentos.

    Logs estão anexos. O Arquivo Backup esta corrigido.

    Apenas a instancia do BD Sapiens_DEV.log que ficou grande, esta instancia é de testes.

    Anexo logs


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    quarta-feira, 24 de julho de 2013 20:55

Todas as Respostas

  • Tenta fazer assim:

    BACKUP DATABASE BANCO TO DISK = 'C:\BACKUP.BAK'

    Se for o SQL Enterprise:

    BACKUP DATABASE BANCO TO DISK = 'C:\BACKUP.BAK' WITH COMPRESSION

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:47
    terça-feira, 16 de julho de 2013 14:18
  • Se for 2008 R2 qual melhor sintaxe do script para backup ?

    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:47
    terça-feira, 16 de julho de 2013 14:33
  • NA verdade o que ocorre é seu backup esta em modo append, ou seja a cada backup ele guarda os anteriores no mesmo arquivo. Isso é padrao do comando de backup

    O comando deve prever o o atributo INIT, desta maneira:

    BACKUP DATABASE BANCO TO DISK = 'C:\BACKUP.BAK' WITH COMPRESSION, INIT

    Fonte:http://www.dotnetfunda.com/articles/article1140-backup-compression-sql-server-2008.aspx

    e 

    http://msdn.microsoft.com/en-us/library/ms186865.aspx

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 14:52
  • Willian,  estou pegando a logica que herdei aqui.

    Pessoa anterior criou:

    1) Rotina para chamar script backup e compactar os arquivos:

    SQLCMD -S 10.1.1.253 -U sa -P S@123 -i c:\admin\backup.sql

    REM Captura data do sistema
    For /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set mydate=%%c%%b%%a)
    For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)

    REM Cria Arquivo .RAR 
    c:\admin\rar.exe a -r D:\BACKUP\"%mydate%_%mytime%_BASES.RAR" D:\BACKUP\*.BAK 
    cd /d D:\BACKUP\

    REM Deleta arquivos Temporarios  
    cd /d %temp%
    cd /d D:\BACKUP\
    del /q /s /f *.BAK
    exit

    ---------------------------Ao terminar este comando  acima inicia-se este script SQL abaixo:

    DECLARE @name VARCHAR(50) -- database name  
    DECLARE @path VARCHAR(256) -- path for backup files  
    DECLARE @fileName VARCHAR(256) -- filename for backup  
    DECLARE @fileDate VARCHAR(20) -- used for file name 

    SET @path = 'd:\backup\'  

    SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 

    DECLARE db_cursor CURSOR FOR  
    SELECT name 
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb')  

    OPEN db_cursor   
    FETCH NEXT FROM db_cursor INTO @name   

    WHILE @@FETCH_STATUS = 0   
    BEGIN   
           SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
           BACKUP DATABASE @name TO DISK = @fileName  

           FETCH NEXT FROM db_cursor INTO @name   
    END   

    CLOSE db_cursor   
    DEALLOCATE db_cursor  

    Pergunta é onde insiro

    sintaxe:

    WITH COMPRESSION, INIT no script em SQL ?

    Agradeço a ajuda, pois tentei algumas maneiras não deu certo.

    Abraços.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 16:38
  • Voce pode listar o que tem dentro do arquivo:

    c:\admin\backup.sql?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 17:10
  • Claro .... estava citado no forum acima, mais esta abaixo novamente:

    ---------inicio---------------------

    DECLARE @name VARCHAR(50) -- database name  
    DECLARE @path VARCHAR(256) -- path for backup files  
    DECLARE @fileName VARCHAR(256) -- filename for backup  
    DECLARE @fileDate VARCHAR(20) -- used for file name 

    SET @path = 'd:\backup\'  

    SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 

    DECLARE db_cursor CURSOR FOR  
    SELECT name 
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb')  

    OPEN db_cursor   
    FETCH NEXT FROM db_cursor INTO @name   

    WHILE @@FETCH_STATUS = 0   
    BEGIN   
           SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
           BACKUP DATABASE @name TO DISK = @fileName  

           FETCH NEXT FROM db_cursor INTO @name   
    END   

    CLOSE db_cursor   
    DEALLOCATE db_cursor 

    ------------------- Fim ----------------------


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 17:14
  • Ok.. eu nao tinha certeza se o script SQL era o mesmo contido dentro de c:\admin\backup.sql?

    Entao, o que vc tem que alterar é

    BACKUP DATABASE @name TO DISK = @fileName  

    para 

    BACKUP DATABASE @name TO DISK = @fileName  WITH COMPRESSION, INIT


    Mas analisando agora eu creio que o problema possa ser outro..

    Dependendo do recoverymodel, o SQL guarda o log de transaçoes.. Isso te permite, por exemplo, recuperar os ultimos 15 minutos de atividades do banco... mas se vc nao precisa esse nivel de segurança, sugiro voce setar o recoveryModel para Simple ao inves de Full

    http://www.databasejournal.com/features/mssql/article.php/3782401/SQL-Server-2008-Recovery-Models-and-Backups.htm


    Com isso seu arquivo de backup ja ficara menor...

    Se vc quiser manter full, entao vc sera obrigado a fezer um backup de log (pelo menos 4 vezes ao dia) para que ele fique pequeno... Recomendo isso somente se vc precisar recuperar informaçoes parciais durante o dia.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 18:37
  • DECLARE @name VARCHAR(50) -- database name  
    DECLARE @path VARCHAR(256) -- path for backup files  
    DECLARE @fileName VARCHAR(256) -- filename for backup  
    DECLARE @fileDate VARCHAR(20) -- used for file name 
    
    SET @path = 'd:\backup\'  
    
    SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 
    
    DECLARE db_cursor CURSOR FOR  
    SELECT name 
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb')  
    
    OPEN db_cursor   
    FETCH NEXT FROM db_cursor INTO @name   
    
    WHILE @@FETCH_STATUS = 0   
    BEGIN   
           SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
           BACKUP DATABASE @name TO DISK = @fileName WITH COMPRESSION
    
           FETCH NEXT FROM db_cursor INTO @name   
    END   
    
    CLOSE db_cursor   
    DEALLOCATE db_cursor 
    Neste caso ele apenas irá alocar varios em um unico arquivo se for do mesmo dia, pois você cria um arquivo por dia (pelo que vi no script). Se for o sql enterprise incluiu o WITH COMPRESSION que ira compact de uma forma razoável porem o backup irá demorar um pouco mais.
    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 18:41
  • DECLARE @name VARCHAR(50) -- database name  
    DECLARE @path VARCHAR(256) -- path for backup files  
    DECLARE @fileName VARCHAR(256) -- filename for backup  
    DECLARE @fileDate VARCHAR(20) -- used for file name 
    
    SET @path = 'd:\backup\'  
    
    SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 
    
    DECLARE db_cursor CURSOR FOR  
    SELECT name 
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb')  
    
    OPEN db_cursor   
    FETCH NEXT FROM db_cursor INTO @name   
    
    WHILE @@FETCH_STATUS = 0   
    BEGIN   
           SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
           BACKUP DATABASE @name TO DISK = @fileName WITH COMPRESSION
    
           FETCH NEXT FROM db_cursor INTO @name   
    END   
    
    CLOSE db_cursor   
    DEALLOCATE db_cursor 
    Neste caso ele apenas irá alocar varios em um unico arquivo se for do mesmo dia, pois você cria um arquivo por dia (pelo que vi no script). Se for o sql enterprise incluiu o WITH COMPRESSION que ira compact de uma forma razoável porem o backup irá demorar um pouco mais.
    Você poderia colocar todos os backups em um único arquivo utilizando o with compression, assim você não precisaria usar o WinRAR para compactalos.
    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 18:43
  • 1-Estou testando backup com sua primeira sugestão. 

    2-É um backup agendado, roda as 23:00 todos os dias.

    Não tem necessidade de recuperação parcial.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 18:45
  • Willian,

    Veja anexo, versão diferente SQL em sua tela. Não tem a opção mencionada 

    Aqui 2008 R2


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 19:32
  • >>>Não tem necessidade de recuperação parcial.

    Neste caso mude o tipo de recovery para simple, conforme a imagem que eu te enviei.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    terça-feira, 16 de julho de 2013 19:33
  • Expanda o Databases... Ache a sua base e depois clique com o botao direito (secundario) do mouse.. Vai aparecer um menu e uma das opcoes  é propriedades.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 19:41
  • Achei.

    Entretanto já esta em "simple"

    Não entendo porque bakup da base produção esta com 10 gigas e backup da base teste que espelho esta com 1,5 gb. 


    Neto, Elias M S IT Services Blumenau/SC

    terça-feira, 16 de julho de 2013 19:53
  • Caro Elias,

    Para mudar o tipo de recovery da base clique em "New Query" e execute:

    ALTER DATABASE nomedasuabase SET RECOVERY SIMPLE

    Desta forma, você deixará de ter um problema futuro com seu transaction log, mas só poderá restaurar a base dos arquivos de backup.

    Já em relação ao backup, está crescendo diariamente porque dentro do arquivo estão acumulando vários backups, ou seja, está fazendo append. Para resolver o problema, utilize WITH INIT na linha que executa o backup. De acordo com o print que você enviou, pela nomenclatura da instância, é possível que você esteja utilizando o SQL 2008 R2 Express, confere?

    Para saber, abra uma nova query e execute:

     SELECT @@version

    Se for Express, deixe a linha do backup assim:

    BACKUP DATABASE @name TO DISK = @fileName WITH INIT

    Se for Standard, Enterprise ou Datacenter, deixe assim:

    BACKUP DATABASE @name TO DISK = @fileName WITH INIT, COMPRESSION

    O WITH INIT fará com que o backup seja substituído ao invés de anexado ao arquivo enquanto o COMPRESSION vai compactá-lo, ajudando a reduzir o tamanho.

    Ficou mais alguma dúvida?


    <p><b>Luiz Mercante</b><br/> MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003 <br/> <a href="mailto:sqldicas@outlook.com">sqldicas@outlook.com</a><br/> <a href="http://www.sqldicas.com.br" target="_blank">http://sqldicas.com.br</a></p> <br/> Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 16 de julho de 2013 19:55
    Moderador
  • Versão do banco

    Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)   Apr  2 2010 15:48:46   Copyright (c) Microsoft Corporation  Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) 


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 20:01
  • Quando vc diz que o backup da base de produ]cao tem 10GB, vc diz que cada aquivo gerado possui 10GB?

    Voce tem certeza que em producao a base esta setada para Simple Recovery?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 20:04
  • Willian, 10.786 GB acabei de rodar.

    Para ser sincero achei esta configuração.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    terça-feira, 16 de julho de 2013 20:10
  • Elias, qual o tamanho da base? Quanto este backup cresce diariamente? Este arquivo de 10GB quando compactado pelo Winrar fica menor?

    Abs.


    Luiz Mercante - MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003 | sqldicas@outlook.com | http://sqldicas.com.br | Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:48
    quarta-feira, 17 de julho de 2013 11:21
    Moderador
  • Isso foi herdado de outro TI

    Compactado com aplicativo rar.exe 

    tamanho e data em ordem crescente, não consigo fazer parar de aumentar.

    Ja estudei um pouco de tudo

    10/07/2013  23:53       655.304.161 20130710_2348_BASES.RAR
    12/07/2013  00:06       697.850.380 20130712_0002_BASES.RAR
    15/07/2013  09:48       740.328.090 20130713_0002_BASES.RAR
    14/07/2013  00:22       783.080.377 20130714_0017_BASES.RAR
    14/07/2013  23:58       819.831.976 20130714_2353_BASES.RAR
    16/07/2013  00:16       866.191.529 20130716_0010_BASES.RAR
    16/07/2013  17:09       898.724.773 20130716_1704_BASES.RAR
    17/07/2013  00:09       913.451.236 20130717_0003_BASES.RAR


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 11:32
  • Verifique o diretorio DATA.. Lá voce vai encontrar os dois arquivos que compoem a sua base: um .MDF e um .LDF

    Veja o tamanho de cada um deles. Poste aqui, se possivel, um screenshot da tela do windows explorer.

    Ainda creio que seja o arquivo LDF que nao esteja sendo truncado.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 11:51
  • Voce pode mandar um screenshot da pasta onde os arquivos estao sendo gerados?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 12:07
  • Segue Screm sã pastas diferentes:


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 12:14
  • Isso confirma o que eu disse... Seus arquivos de log nao estao sendo truncados.

    Para isso proceda da seguinte forma:

    1- Primeiro vc tem que pegar o nome do log (ou logs) do banco de dados. Clique como botao direito e veja propriedades, depois va em files. La voce vai ver o nome do log(veja a imagem abaixo onde eu indico)

    Com esse nome, execute a seguinte query:

    USE [sc_prod]
    GO
    DBCC SHRINKFILE (N'sc_prod_Log' , 0, TRUNCATEONLY)
    GO
    

    No seu caso, substitua o 'sc_prod' por Sapiens_PROD e sc_prod_log pelo nome que vc encontra na janela de propriedades da db, que caso voce tenha usado o padrao, deve ser "Sapiens_PROD_Log"

    Faça um backup depois disso e verifique o tamanho.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 13:31
  • Willian, recapitulando para não fazer nada errado:

    USE [sc_prod]
    GO
    DBCC SHRINKFILE (N'

    Sapiens_PROD_Log

    ' , 0, TRUNCATEONLY)

    GO


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 14:00
  • Troque o

    USE [sc_prod]

    por

    USE [Sapiens_prod]

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 14:13
  • William, testei agora depois do almoço

    fiz seu passo a passo

    mais não deu certo.

    backup continua crescendo crescendo....

    De qualquer modo agradeço sua grande ajuda.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 18:16
  • O que vc obteve como reotrno apos o comando:

    DBCC SHRINKFILE (N'Sapiens_PROD_Log' , 0, TRUNCATEONLY) ?

    Voce verificou se o arquivo de log diminuiu?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 20:08
  • Willian,

    desculpa acho que passei batido.

     eu executei script, mais não observei no diretorio o tamanho do arquivo de log(s).

    Pergunto posso executar script novamente colher resultado dele e enviar os tamanhos dos logs antes e depois ?

    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 20:22
  • Sim.. esse comando pode ser executato varias vezes.. a unica recomendaçao é que se faça quando todo mundo estiver fora do sistema.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 20:24
  • ok. Willian,

    Vou executar apos as 18:00 e posto resultados antes e depois 


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 20:26
  • Execução. Anexo na sequencia:


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 21:46

  • Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quarta-feira, 17 de julho de 2013 21:48
  • Ok.. Vamos tentar outra coisa

    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = N'D:\Backup\Sapiens_Prod_log.bak'
    GO
    DBCC SHRINKFILE (N'Sapiens_PROD_Log' , 0, TRUNCATEONLY)
    GO

    FONTE:http://stackoverflow.com/questions/646845/sql-server-2008-log-will-not-truncate-driving-me-crazy

    Isso força um backup de log, que na pratica cria um novo chekpoint. 

    O arquivo .BAK gerado apos esse comando pode ser deletado sem problemas.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée



    quinta-feira, 18 de julho de 2013 12:18
  • Eu faria o seguinte:

    • Alteraria o backup para Full.
    • Faria um Backup do Banco e outro do Log (No do log with init).
    • Alteraria o tamanho do Log para 30% do tamanho do Banco
    • Retiraria o FileGrowth do Log.

    Assim você não teria mais problema com tamanho e teria mais opções de restauração como por exemplo até uma hora especifica.

    A utilização do shrink cria muitos fragmentos no banco de dados, de principio não da problemas mais dependendo do tamanho do banco e de quantos fragmentos ele criou pode perder desempenho.


    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quinta-feira, 18 de julho de 2013 12:58
  • Willian

    vou fazer , entretanto no intervalo de almoço pois tenho que desconectar bando do aplicativo

    agradeço


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quinta-feira, 18 de julho de 2013 13:49
  • Executei:

    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = N'D:\Backup\Sapiens_Prod_log.bak'
    GO
    DBCC SHRINKFILE (N'Sapiens_PROD_Log' , 0, TRUNCATEONLY)
    GO

    Seguinte erro:

    Msg 4208, Level 16, State 1, Line 1
    The statement BACKUP LOG is not allowed while the recovery model is SIMPLE. Use BACKUP DATABASE or change the recovery model using ALTER DATABASE.
    Msg 3013, Level 16, State 1, Line 1
    BACKUP LOG is terminating abnormally.
    Msg 102, Level 15, State 1, Line 1
    Incorrect syntax near 'GO'.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    quinta-feira, 18 de julho de 2013 23:42
  • Caro Elias,

    Sua base está com o Recovery em modo Simple, portanto, a cada checkpoint o Transaction Log é truncado. O que vai junto com o backup full é o tail do log, ou seja, só aquelas transações entre o último checkpoint e o momento do backup.

    O comando abaixo retorna o status e o tamanho de todos os arquivos de TLog:

    DBCC SQLPERF(logspace)

    Assim, vamos saber se realmente os TLogs estão vazios. O que pode estar acontecendo é que como o arquivo cresceu bastante a quantidade de VLFs aumentou muito. O TLog é circular e dependendo do autogrowth pode estar bem fragmentado.

    http://sqldicas.com.br/dicas/arquitetura-do-transaction-log/

    Fico no aguardo do seu retorno pra prosseguirmos com a análise.

    Abs,


    Luiz Mercante - MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003 | sqldicas@outlook.com | http://sqldicas.com.br | Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.



    sexta-feira, 19 de julho de 2013 01:31
    Moderador
  • Mercante a pedido: segue...


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:49
    sexta-feira, 19 de julho de 2013 11:11
  • Bom dia Elias.

    Viu como o Log do seu banco Sapiens_PROD está cheio? Com o TLog cheio não é possível fazer shrink do arquivo, liberando seu espaço pro Sistema Operacional.

    Vamos voltar o recovery model para Full, assim podemos fazer o backup do TLog. Desta forma, ele é truncado (esvaziado) e aí sim podemos liberar o espaço.

    ALTER DATABASE Sapiens_PROD SET RECOVERY FULL

    Agora vamos fazer o backup do Transaction Log. Em muitos casos, devido a utilização da base, é necessário executar algumas vezes para que o TLog seja truncado corretamente. Faça o backup umas 3x seguidas:

    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    Por último, rode um backup junto com o Shrink, para já fazer o shrink logo após o backup:

    use [Sapiens_PROD] GO BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    GO

    DBCC SHRINKFILE ('Sapiens_PROD_Log' , 1024)
    GO


    Depois coloque a base novamente em SIMPLE:

    ALTER DATABASE SApiens_PROD SET RECOVERY SIMPLE

    E rode o DBCC SQLPERF(logspace) novamente.

    Abs,


    Luiz Mercante - MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003 | sqldicas@outlook.com | http://sqldicas.com.br | Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.


    sexta-feira, 19 de julho de 2013 11:41
    Moderador
  • Ok. Mercante.

    Script serão gerados no intervalo do almoço depois lhe passo resultados.

    Abraços, agardeço.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    sexta-feira, 19 de julho de 2013 11:43
  • Caro Elias,

    Foi possível executar os procedimentos recomendados?

    Abs,


    Luiz Mercante - MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003 | sqldicas@outlook.com | http://sqldicas.com.br | Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    segunda-feira, 22 de julho de 2013 12:17
    Moderador
  • Luiz, Bom Dia!


    Minha sexta feira foi agitada aqui.

    Para rodar isso preciso parar todo erp

    Tem rotinas web services que utilizam o banco, para isso preciso parar todos os serviços.

    Farei ainda hoje.

    Agradeço.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    segunda-feira, 22 de julho de 2013 13:09
  • passo -1

    ALTER DATABASE Sapiens_PROD SET RECOVERY FULL

    Exito

    ---------------------------

    Passo 2

    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    erro:

    Msg 4214, Level 16, State 1, Line 1
    BACKUP LOG cannot be performed because there is no current database backup.
    Msg 3013, Level 16, State 1, Line 1
    BACKUP LOG is terminating abnormally.

    ----------------------------------


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    segunda-feira, 22 de julho de 2013 21:17
  • Luiz executei este que me foi enviado:

    DECLARE @NomeBD AS VARCHAR(256);
    SET @NomeBD = DB_NAME();

    EXEC('ALTER DATABASE ['+ @NomeBD + '] SET RECOVERY SIMPLE');
    EXEC('ALTER DATABASE ['+ @NomeBD + '] SET RECOVERY FULL');
    GO

    DECLARE @Arquivos AS TABLE (Nome VARCHAR(256));
    DECLARE @Nome AS VARCHAR(256);
    INSERT INTO @Arquivos (Nome) (SELECT rtrim(name) FROM sysfiles);
    WHILE EXISTS (SELECT Nome FROM @Arquivos)
    BEGIN
    SELECT @Nome = Nome FROM @Arquivos;
    EXEC('DBCC SHRINKFILE (' + @Nome + ')');
    DELETE FROM @Arquivos WHERE Nome = @Nome;
    END

     Log do Sapiens_prod abaixou.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    segunda-feira, 22 de julho de 2013 21:32
  • Elias,

    Precisamos fazer um backup full da base depois de mudar o recovery para Full, como foi feito no script que você executou.

    BACKUP DATABASE Sapiens_PROD to disk 'D:\caminho_que_vc_quiser\backup.bak'

    Depois vai funcionar:

    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    use [Sapiens_PROD] GO BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    GO

    DBCC SHRINKFILE ('Sapiens_PROD_Log' , 1024)
    GO

    ALTER DATABASE SApiens_PROD SET RECOVERY SIMPLE

    Não esqueça do DBCC SQLPERF(logspace)

    Fico no aguardo.


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    segunda-feira, 22 de julho de 2013 22:01
    Moderador
  • Essa Mensagem.. tem algo errado com sintaxe:

    Precisamos fazer um backup full da base depois de mudar o recovery para Full, como foi feito no script que você executou.

    BACKUP DATABASE Sapiens_PROD to disk 'D:\caminho_que_vc_quiser\backup.bak'

    --->> BACKUP DATABASE Sapiens_PROD to disk 'D:\Backup\backup.bak'

    Msg 102, Level 15, State 1, Line 1
    Incorrect syntax near 'd:\BACKUP\backup.bak'.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    terça-feira, 23 de julho de 2013 12:44
  • Desculpe, faltou um sinal de igual:

    BACKUP DATABASE Sapiens_PROD to disk = 'D:\caminho_que_vc_quiser\backup.bak'


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    terça-feira, 23 de julho de 2013 15:25
    Moderador
  • Executado na ordem:

    DATABASE SApiens_PROD EM  FULL

    -- BAckup ok

     
    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    Msg 4208, Level 16, State 1, Line 1
    The statement BACKUP LOG is not allowed while the recovery model is SIMPLE. Use BACKUP DATABASE or change the recovery model using ALTER DATABASE.
    Msg 3013, Level 16, State 1, Line 1
    BACKUP LOG is terminating abnormally.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    terça-feira, 23 de julho de 2013 16:31
  • Elias,

    No momento que te passei os comandos, sua base estava com o recovery model em Full mas agora está em Simple.

    Vou colocar o passo a passo aqui novamente:

    ALTER DATABASE SApiens_PROD SET RECOVERY FULL

    BACKUP DATABASE Sapiens_PROD to disk = 'D:\caminho_que_vc_quiser\backup.bak'


    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    use [Sapiens_PROD] GO BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'

    GO

    DBCC SHRINKFILE ('Sapiens_PROD_Log' , 1024)
    GO

    ALTER DATABASE SApiens_PROD SET RECOVERY SIMPLE

    Não esqueça do DBCC SQLPERF(logspace)


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 23 de julho de 2013 17:08
    Moderador
  • Luiz, Agradeço sua ajuda.

    Mais em sua orientação, se você olhar acima meu ultimo comentário:

    a base estava em base estava com o recovery model DATABASE SApiens_PROD EM  FULL, tive cuidado em seta-la antes de executar seu passo a passo.

    tudo bem..

    Vou executar na ordem sua acima tudo novamente.

    Abraços.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    terça-feira, 23 de julho de 2013 17:48
  • Elias,

    Então estou pensando aqui que existe algum erro não identificado justamente na parte de Recovery Model. Existe a possibilidade de reiniciar a instância e depois executar o procedimento?


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 23 de julho de 2013 18:40
    Moderador
  • Luiz, Desculpe a minha ignorância e despreparo, 

    Posso reiniciar a instancia do BD, você poderia dizer como faze-lo ?

    Caso não queira, entendendo perfeitamente.

    Agradeço.


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    terça-feira, 23 de julho de 2013 18:45
  • Caro Elias,

    Não há do que se desculpar, estamos aqui para ajudá-lo. Porém, tendo em vista que você tem muito pouco conhecimento em SQL Server, sugiro que seja acompanhado por um profissional. Em muitos casos onde a instância é reiniciada, pode não iniciar corretamente, pode ter ajustes para fazer, pode ter configuração ou aplicação de patch que ficou pendente de reiniciar a instância, deixando suas bases fora.

    Para reiniciar a instância, basta clicar lá em cima no TECNOSERVER\SQLEXPRESS (SQL Server 10.50.1600 - tecnofogos) com o botão direito e clicar em restart, mas fica por sua conta e risco. Se correr tudo bem, ela vai parar (as bases ficarão fora) e em alguns segundo vai voltar a ficar verde.

    Abs,


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 23 de julho de 2013 19:21
    Moderador
  • O mesmo pode ser feito reiniciando o servico atraves do painel de controle> serviços, ou no pior caso, reiniciando o windows (em ultimo caso)

    Mas a forma mais comum é fazer o que o Luiz sugeriu.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée


    terça-feira, 23 de julho de 2013 19:32
  • Procedimento de restart do servidor acho mais seguro.

    Tenho certeza que serviços subirão todos.

    Posso usar isso como restart do BD ?


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    terça-feira, 23 de julho de 2013 19:41
  • O procedimento mais seguro é o que te falei, onde somente o serviço do SQL Server será reiniciado. Não é um conjunto de serviços, é o serviço do SQL Server e do SQL Server Agent. Ambos estão na lista de serviços do Windows (execute services.msc pra acessar os serviços).

    Reiniciar o servidor pode finalizar os processos do SQL de forma forçada, o que pode aumentar o tempo de indisponibilidade.


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 23 de julho de 2013 19:51
    Moderador
  • Luiz, Fiz todos procedimentos.

    Logs estão anexos. O Arquivo Backup esta corrigido.

    Apenas a instancia do BD Sapiens_DEV.log que ficou grande, esta instancia é de testes.

    Anexo logs


    Neto, Elias M S IT Services Blumenau/SC

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:50
    quarta-feira, 24 de julho de 2013 20:55
  • Que boa notícia Elias.

    Podemos fazer o mesmo procedimento na base de Dev, basta alterar o nome da base e do arquivo.

    Por favor, veja agora o tamanho do backup de hoje para amanhã que é o motivo do seu thread. Penso que tínhamos alguma transação presa, utilizando grande parte do TLog, e que agora vai ser resolvido.

    Por gentileza, retorna pra nós e marque as respostas úteis como resposta da thread caso o problema tenha sido resolvido.

    Obrigado.


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    • Marcado como Resposta Neto, Elias M S quarta-feira, 24 de julho de 2013 22:45
    quarta-feira, 24 de julho de 2013 22:33
    Moderador
  • Ok Elias. Realmente havia uma transaçao que bloqueava o processo normal de compressao (shrink)

    Eu creio que vc deva marcar somente a reposta que mais te ajudou, que na minha opiniao foi do Luiz Mercante, em especial esta aqui:

    "

    Vou colocar o passo a passo aqui novamente:

    ALTER DATABASE SApiens_PROD SET RECOVERY FULL
    GO
    BACKUP DATABASE Sapiens_PROD to disk = 'D:\caminho_que_vc_quiser\backup.bak'
    GO
    use [Sapiens_PROD] 
    GO
    BACKUP LOG [Sapiens_PROD] TO DISK = 'D:\Backup\TLogSapiens_PROD.trn'
    
    GO
    
    DBCC SHRINKFILE ('Sapiens_PROD_Log' , 1024)
    GO
    ALTER DATABASE SApiens_PROD SET RECOVERY SIMPLE

    Não esqueça do DBCC SQLPERF(logspace)

    "

    É importante marcar somente a correta para que em futuras pesquisas outros usuarios saibam qual foi a soluçao... Marcar como respostas perguntas ou comentarios (mesmo que pertinentes) nao ajudam.

    Grato pela atençao


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée


    quinta-feira, 25 de julho de 2013 13:02