Usuário com melhor resposta
Alterar limitação de crescimento do logs e data files.

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)
GOA 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- Marcado como Resposta Junior Galvão - MVPMVP, Moderator segunda-feira, 30 de dezembro de 2019 22:17
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 outorgadoquarta-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 outorgadoquarta-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 onlyE 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- Marcado como Resposta Junior Galvão - MVPMVP, Moderator segunda-feira, 30 de dezembro de 2019 22:17
quarta-feira, 28 de julho de 2010 17:54