locked
Alterar limitação de crescimento do logs e data files. RRS feed

  • Pergunta

  • Pessoal,

    Aproveitando o gancho deste tópico, estou encontrando dificuldades para realizar algumas alterações nas bases que rodo em um determinado servidor.

    O que ocorre, hoje o meus arquivos de log e data estão com marcados para crescimento restrito e eu quero ilimitar o tamanho do crescimento das bases.

    Tentei fazer a alteração pelo interface gráfica, pelas opções: database > properties > files e selecionar as opções: "Unrestricted growth" e ao clicar no botão "OK", erro nenhum é exibido, porém as bases continuam com tamanho limitado.

    Tentei executar a alteração via T-SQL, mas não obtive exite, veja o código:

    USE [BASE1]
    GO
    DBCC SHRINKFILE (N'BASE_Log' , 2)
    GO
    USE [master]
    GO
    ALTER DATABASE [BASE1] MODIFY FILE ( NAME = N'BASE_Log', MAXSIZE = UNLIMITED)
    GO

    A instrução é executada sem erros, mas se eu executo o comando:

    sp_helpdb BASE1

    Vejo que o tamanho dos arquivos de log da base, permanecem setados com o crescimento restrito.
    Executei os procedimentos com a conta "Administrator" e "sa" (uma vez que meu método de autenticação é mixed), mas mesmo assim não obtive sucesso.

    Alguém pode me ajudar?
    Abraços!

    • Movido Gustavo Maia Aguiar quarta-feira, 28 de julho de 2010 16:01 (De:SQL Server - Desenvolvimento Geral)
    quarta-feira, 28 de julho de 2010 15:10

Respostas

  • Olá Vinicius,

    Não achei uma explicação oficial (alguma referência) para isso em lugar algum, mas internamente, UNLIMITED é a mesma coisa que "o máximo permitido por tipo de arquivo": 2147483648 KB (ou 2 TB) no caso de um arquivo de Log. Ou seja, mesmo que o valor apareça em "números", o que importa é que ele já está setado para o seu limite máximo.

    No teu server, possivelmente os databases criados durante a instalação (o MASTER, ou TEMPDB, por exemplo) terão MAXSIZE = Unlimited. Assim como qualquer database migrado do SQL 2000. As demais (que você criou manualmente), terão seu maxsize sendo exibido com o tamanho máximo (em KB). Tanto que se você mudar o log da MASTER para "2147483648 KB", por exemplo, não conseguirá voltar novamente para Unlimited. Pode parecer um "bug", mas.. não é nada pra se preocupar.

    IMPORTANTE: só faça os testes acima em um server de teste, ok?

    O comando para alterar o MAXSIZE para 2 TB é o seguinte:

    ALTER DATABASE nome_database
    MODIFY FILE (
       NAME = NOME_ARQUIVO_DE_LOG
     , MAXSIZE = 2 TB
    )

     

    Um abraço,

    Raul Santos Neto
    MCT, MCITP, MCTS, MCP


    http://raulsantosneto.wordpress.com
    quarta-feira, 28 de julho de 2010 17:54

Todas as Respostas

  • Boa tarde Vinicius, tudo bem?

    A opção não é alterada devido restrição da própria ferramenta, quando uma base é criada com a opção de crescimento ilimitado.

    Se você pesquisar no books online, você perceberá que o tamanho máximo de um arquivo LOG é de 2 TBytes.

    ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10sq_GetStart/html/13e95046-0e76-4604-b561-d1a74dd824d7.htm

    SQL Server Database Engine object Maximum sizes/numbers SQL Server (32-bit) Maximum sizes/numbers SQL Server (64-bit)

    File size (log)

    2 terabytes

    2 terabytes

    Ou seja, se você precisar de mais espaço, você deverá aumentar a quantidade destes arquivos.

    Por isso nenhuma mensagem de erro é exibida.

    Atenciosamente,

    Dobereiner Miller Silva Rodrigues

    sqlinternal.blogspot.com


    Aquilo que sou é aquilo que me foi outorgado
    quarta-feira, 28 de julho de 2010 15:28
  • Faltou informar que esta limitação existe para não denigrir o desempenho do servidor. Já que a técnica de leitura de um arquivo LOG é IO e ele sua leitura usa as páginas do sistema operacional Microsoft que são de 4kbytes.

    Ao aumentar muito este arquivo, processos de backups e outros passarão a usar mais e mais espaço, tornando tudo mais lento em sua engine.

    Atenciosamente,

    Dobereiner Miller Silva Rodrigues

    sqlinternal.blogspot.com


    Aquilo que sou é aquilo que me foi outorgado
    quarta-feira, 28 de julho de 2010 15:31
  • Pessoal,

    Entendi, mas porque em outras bases ao executar a sp_heldp o maxsize do file log aparece como unlimited? Exemplo:

    name                 fileid          filename                                      filegroup    size                   maxsize           growth      usage
    BASE2_Data       1               F:\MSSQL\DATA\BASE2.MDF         PRIMARY   15003712 KB     20480000 KB     10%         data only
    BASE2_Log         2               F:\MSSQL\LOGS\BASE2.ldf           NULL         146368 KB         Unlimited          10%          log only

    E como setar para que o arquivo de log fique com o tamanho total de 2 TB? Como faço para que o maxsize fique com o status de unlimited, como está?
    Estou rodando o Microsoft Windows Server 2008 R2 Datacenter Edition + Microsoft SQL Server 2008 Enterprise com os packs instalados.

    Valeu tb pelas respostas!
    Abs!

    quarta-feira, 28 de julho de 2010 16:11
  • Olá Vinicius,

    Não achei uma explicação oficial (alguma referência) para isso em lugar algum, mas internamente, UNLIMITED é a mesma coisa que "o máximo permitido por tipo de arquivo": 2147483648 KB (ou 2 TB) no caso de um arquivo de Log. Ou seja, mesmo que o valor apareça em "números", o que importa é que ele já está setado para o seu limite máximo.

    No teu server, possivelmente os databases criados durante a instalação (o MASTER, ou TEMPDB, por exemplo) terão MAXSIZE = Unlimited. Assim como qualquer database migrado do SQL 2000. As demais (que você criou manualmente), terão seu maxsize sendo exibido com o tamanho máximo (em KB). Tanto que se você mudar o log da MASTER para "2147483648 KB", por exemplo, não conseguirá voltar novamente para Unlimited. Pode parecer um "bug", mas.. não é nada pra se preocupar.

    IMPORTANTE: só faça os testes acima em um server de teste, ok?

    O comando para alterar o MAXSIZE para 2 TB é o seguinte:

    ALTER DATABASE nome_database
    MODIFY FILE (
       NAME = NOME_ARQUIVO_DE_LOG
     , MAXSIZE = 2 TB
    )

     

    Um abraço,

    Raul Santos Neto
    MCT, MCITP, MCTS, MCP


    http://raulsantosneto.wordpress.com
    quarta-feira, 28 de julho de 2010 17:54