Inquiridor
Como gerar um DBCC SHINKFILE automaticamente ?

Pergunta
-
Bom, temos vários arquivos que são importados, ficando assim em fila e sendo processados um por um, gerando assim logs...
Quando é necessário compactamos... este log pelo DBCC SHINKFILE, porém se faz necessário que o compactamento seja realizado automaticamente, teria alguma forma de descobrir se o log está cheio ou quase cheio e então pelo banco executar este comando? como uma rotina?
teria a opção do agendamento automatico pelo windows, porém não satisfaria como a opção de verificar quando está cheio e realizar automaticamente.
Agradecido!- Movido Gustavo Maia Aguiar quinta-feira, 24 de dezembro de 2009 18:19 (De:SQL Server - Desenvolvimento Geral)
Todas as Respostas
-
Se for com o uma versao nao express tem sim, craindo um plano de manutencao e utilizando o SQL Server Agent .. Se for express, este nao esta disponivel, vai ter que fazer via script e agendar com o agendador de tarefas do windows (schedule tasks)A resposta depende da informaçao de qual versao vc usaAtt
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com) -
-
Julio pode ser feito no standart tbm..
para isto, siga as etapas abaixo
1- em Management / Maintenance plan - clique com o botao direito e escolha a opcao Mantenance Plan Wizard
2- next na tela de boas vindas
3- informe o nome deste plano e defina a agenda que o mesmo devera ocorrer (ex. todo sabado as 23:00) e next
4- Selecione a opcao "Shrink Database" e next, na tela seguinte next
5- Selecione os databases que deseja fazer a shrink e next, next e Finish
Esta é uma maneira bem básica e rápida para schedular o shrink
Att.
Marcelo Fernandes
MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!- Sugerido como Resposta William John Adam Trindade segunda-feira, 28 de dezembro de 2009 14:07
-
JulioFaz exatamente como o Marcelo falou. Alem disso esse plano de mautençao permite agendar um backup (full e dos logs) alem de dar uma checada nos indices e verificar a estrutura da tabela tambem.. tudo com uma interface tipo Wizard. Alem disso vc pode agendar as diversas tarefas com horarios diferentes (se vc quiser)Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com) -
Hmm otimo...
eu uso management porém o banco esta em um servidor com o standart...
estava pesquisando... e vi no proprio management em properties / options...
a opção autoshrink... ela seria uma boa escolha para evitar lotar o database? como n tem opção de escolher horarios ou frequencia... quando ela é ativada?
vi tbm q eh possivel descobrir o tamanho do log e com isso executar o shrink... essa seria a melhor opção... quando o log atingisse 80% do tamanho eu diminuiria ele...
poderia me ajudar em algumas destas questoes??
agradecido! -
Autoshrink e AutoIncrement sao parametros que devem ser usados com muito cuidado. Eles degradam a performance do Banco.Veja maisEu vi a sugestao de varios DBAs para desligar esses parametros e controlar tudo manualmente. Veja a importancia do plano de manutençao ai,com relacao a quando ela ée ativada, a resposta é sempre! por isso a degradaçao de performacese vc ler neste ultimo link, nem a microsoft recomenda o uso do autoshrink
Note:
Shrinking database and log files can be set to occur automatically. However, we recommend against automatic shrinking, and the autoshrink database property is set to FALSE by default. If autoshrink is set to TRUE, automatic shrinking reduces the size of a file only when more than 25 percent of its space is unused. The file is shrunk either to the size at which only 25 percent of the file is unused space or to the original size of the file, whichever is larger. For information about changing the setting of the autoshrink property, see How to: View or Change the Properties of a Database (SQL Server Management Studio)—use the Auto Shrink property on the Options page—or ALTER DATABASE SET Options (Transact-SQL)—use the AUTO_SHRINK option. att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com) -
Hmm muito obrigado...
Bom com essas opções descartadas... me sobra duas opções...
uma é usar o gerenciador de tarefas do windows... e agendar o shrink... mas não é o ideal... já que não sabemos quando a importação de dados para o banco será exigida ao maximo... lotando assim o log...
por esta razão o ideal seria um script que verificasse o tamanho do log... (vi em um forum que isso é possível porém não sei como realizar), e verificando o tamanho... quando chegasse à um limite ele compactasse...! conhece alguma forma ou dica ou mesmo algum script que faça isso??
muito grato ae pela ajuda nas minhas perguntas! -
O plano de manutençao é a melhor opçao... qual é a dificuldade de utiliza-lo?Ele nao usa o agendador de tarefas do windows, se é essa a questao. ele usa o SQL Server Agent para gerenciar os jobs.E porque nao executar o DBCC SHRINKFILE logo apos a sua importaçao? Independente do tamanho do log... pode ser uma opçao.Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com) -
Otimo... este problema resolvido... aí estaremos vendo aqui se usarem o plano ou mesmo após a importação ( mais provavel ), porém aí veio uma duvida... vc sabe se quando está ocorrendo a importação e processamento dos dados no banco... pode gerar algum problema se o mesmo for interrompido para o compactamento do log...
por exemplo...
importei 20 arquivos de 10 mil linhas cada... ( fizemos este teste... no 18º ele... deu log full )...
porém quando processa um arquivo ele já inicia outro... como uma fila de importações... então... a questão é se haveria algum problema... quando o compactamento é feito... se pode afetar a importação... se ele tah um truncate....
A duvida em si tah praticamente já respondida... muito obrigado... mesmo! =D
Agora são só esses detalhes ae... que caso vc saiba... vou abusar um poko mais ae da sau boa vontade =D
Muito Agradecido! -
Se o encheu o log é porque vc deve estar abrindo uma transaçao e só fechando no final. COmo vc esta fazendo para importar? Atravez do BulkCopy?Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com) -
-
A importação são de arquivos csv que são verificados linha a linha, de empresas, verificando igualdade já existente no banco, um processo demorado, a importação é feita pelo site.
Não temos acesso ao log, apenas trabalhamos com o banco e com o site, então não sei lhe dizer se o log é gerado ao terminar o processo de importação ou linha a linha por exemplo.
O medo é que se por gerar o log por exemplo a cada importação ( dependendo do tamanho leva 1h ou mais ) ele sobrecarregue ou então acabe prejudicando outra importação que já esteja sendo realizada.
Agradecido! -
Ok, mas como vc importa esses arquivos CSV (usando o BCP?)Se for existe uma opçao para fechar a transacao a cada x registros. Isso é util para evitar o estouro do arquivo de log como esta ocorrendo.Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com) -
-
Nao vejo nenhum problema. Se vc verificar o comando DBCC SHRINKFILE vai ver isso:"The database being shrunk does not have to be in single-user mode; other users can be working in the database when the file is shrunk. You do not have to run the instance of SQL Server in single-user mode to shrink the system databases."
Ou seja, vc pode executa-lo com outras conexoes abertas...Mas uma coisa que eu nao entendi. Se vc reinicia a transaçao a cada 5000, nao deveria estourar o log... Esse problema ocorre com frequencia?Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com) -
Muito Obrigado. Então... enviamos um email para quem fez esta parte de processamento mostrando os problemas e as possiveis correções, as quais nós provavelmente iremos fazer.
Este erro ocorreu, quando estavamos importando diversos arquivos em fila, eu subi 20 arquivos e ocorreu database full no 18 e este erro havia ocorrido antes também quando os arquivos estavamos colocados em fila.
De qualquer maneira, Agradeço muito sua ajuda! Quando for implementar de fato o processo de compactamento eu informo aqui ! Muito Obrigado! Aberto para mais dicas! -
Bom estaremos realizando o plano de manutenção mesmo...
porém usamos aqui no suporte o management... e não o standart... o standart é usado no servidor...
este plano de manutenção devria ser realizado diretamento no servidor... ou poderia eu baixar o sql server standart e realiza-lo aqui mesmo ?
Agradecido! -
Consegui instalar aqui o Microsoft SQL Server Management Studio, porém ao ir realizar o plano de manutenção pelo passo a passo indicado acima, não existe a pasta maintence plans, temos um acesso full ao banco, mas não acessamos diretamente do servidor, para realizar isto teria de ser via terminal service ou é algo diferente? Obrigado!
-
-
-
Então, eu tinha o sql server 2005 management express, queria realizar o plano de manutenção, porém por ele não era possível. Então como indicado baixei o standart onde é informado como SQL server 2005 manmagement studio, porém não tem a opção de maintenence plans dentro da pasta management como informado neste mesmo tópico.
Obrigado! -
Bom dia Júlio,
O servidor SQL Server no qual estás tentando criar o plano de manutenção, é 2k ou 2k5?
Se você estiver utilizando o management studio para conectar em uma instância 2k, você verá os planos de manutenção em Management->Legacy, porém não poderás criar um por lá.
Atenciosamente,
André Rocha.
http://br.linkedin.com/pub/andre-rocha/10/269/5a http://CleverData.com.br -
Bom não sei... em management / legacy encontra-se apenas as opções 'SQL MAIL' e 'Data Transformation Services' ( a qual não consigo acessar), o importante para mim seria realizar este plano de manutençã, ou então se tiver algum modo com que eu realiza um shrink automatico de outra forma me indique, pelo plano de manutenção, qual versão preciso ter? onde baixa-la?
Agradecido! -
-
-
Verifique novamente a versao do seu sql.Execute:
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
E no help>about do SSMS tem como copiar as informaçoes sobre a versao.Faça isso e poste aquiAtt
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com) -
Bom dia! Só pra lembrar o objetivo é realizar um plano de manutenção para que atravez deste eu possa realizar o shrink a cada um periodo de horas.
Bom vamos lá...
Seguindo a recomendação do William as respostas foram as seguintes:
productversion = 9.00.1399.06
productlevel = RTM
edition = Standard Edition
executando @@version se tem:
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
Ou seja estou em uma versão do Standard Edition 2005 porém não acvho a opção maintencence plans para realizar o plano de manutenção.
Agradecido pelas ajudas! -
E a versao do SSMS? Poste tambem (va em jauda>sobre ou help>about caso esteja em ingles).. Vou ver se nao é nada relacionado a algum SP, ja que existe o SP3 para SQL 2005 e vc esta com o SP1.de uma olhada aqui tambemAtt
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com) -
Aí esta as informações:
Operating System 5.1.2600
Microsoft SQL Server Management Studio 9.00.1399.00
Microsoft MSXML 2.6 3.0 5.0 6.0
Microsoft Internet Explorer 8.0.6001.18702
Microsoft Data Access Components (MDAC) 2000.085.1132.00 (xpsp.080413-0852)
Microsoft Analysis Services Client Tools 2005.090.1399.00
Microsoft .NET Framework 2.0.50727.3603
Bom o tutorial mas nao tenh uessa opção =/
Obrigado! -
Ok... achei outra coisa interessante...Verifique o nivel de compatibilidade de seus bancos. Se todos tiverem compatibilidade com o 2000, entao a opçao de maitenance plans vai aparecer somente no LegacyMasi uma coisa... verificando o change log do sp2 e sp3 vi que eles corrigem varias coisas relacionados ao planos de manutençao... sugiro aplicar o SP3 tanto no servidor, como na maquina onde esta instalado o SSMS.Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com) -
Mais uma!!!Vc instalou o SSIS no servidor? Sem el vc nao pode criar plano de manutençao...Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com) -
Bom trabalhamos com um banco, mas o banco em si, fica em um servidor, o qual é pago para manter o banco instavel e etc. Ou seja, quando vc diz servidor seria este servidor ou simplesmente a maquina de onde acesso o banco, a qual poderia ser qq maquina?
-
O SSIS tem que estar instalado no Servidor! Desconheco a possibilidade de que este seja instalado em uma maquina a parteAtt
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com) -
Certo. Irei instalar o SP3 aqui na maquina e enviaremos um email para a empresa onde na qual o servidor está instalado, requerindo algumas informações (se esta instalado o SISS, SP3) e verificando a possibilidade deles mesmo fazerem o plano de manutenção.
Atravez do plano de manutenção posso compactar o log de 5 em 5 horas por exemplo ou posso fazer melhor e configurar para que sempre que termine uma importação ele compacte o log (shrink) ?
Muito Agradecido! -
Outra coisa... seria possivel pelo plano de manutenção observar o tamanho do arquivoi de log e quando estivesse com por exemplo 80% cheio, houvesse um compactamento automatico?
Ou teria de ser somente apos a importação?
Ou somente mesmo com horario agendado ( de 3 em 3h por ex )
Muito Agradecido.