Inquiridor
Zipar Backup do SQL Server via DOS

Pergunta
-
Pessoal boa tarde,
Gostaria pedir ajuda aos demais colegas porque eu não estou a conseguir ZIPAR UM ARQUIVO.BAK.
Então eu gostaria de executar um arquivo .bat que possa compactar o meu backup do dia.
alquei sabe como desenvolver esse código?
eu não sei e estou precisando galera!
Todas as Respostas
-
Mdji
Se vc usa o SQL 2008, vc pode usar a compressao nativa, caso contrario pode instalar um software de compressao (winzip, winrar...) e fazer um bat compactalo, segue um link com exemplo de linha de comando para o winzip
http://www.memecode.com/docs/winzip.html
Att.
Marcelo Fernandes
MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!! -
mdji,
Isso mesmo, o Marcelo esta correto, alias em relação ao SQL Server 2008, eu escrevi um artigo para a Revista SQL Magazine, sobre compressão e compactação de dados, procure a edição 68, com certeza poderá ajudar.
Agora se você deseja realmente utilizar um programa de compactação, recomendo o winzip, fazendo uso da xp_cmdshell você poderá realizar este tipo de procedimento.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário] -
Boa Tarde,
Minhas experiências com Winzip e xp_cmdshell não são boas. Quando usamos a xp_cmdshell ela utilizará área de memória do SQL Server (MemToLeave) que é bem restrita (256MB by Default). Mesmo havendo muito memória no Buffer Pool essa memória não é utilizada pela xp_cmdshell. Se for possível utilizar a BAT eu recomendo. Evite a xp_cmdshell.
Quando tiramos a compactação da xp_cmdshell imediatamente diminui a quantidade de DUMPs de memória e instalabilidades no SQL Server como MOVEs inesperados. Claro que a xp_cmdshell sozinha não faz esse estrago todo, mas contribui significativamente.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.comSimulado para o Exame 70-433 - MCTS: Microsoft SQL Server 2008 - Database Development – Parte 03
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1077.entry
Classifique as respostas. O seu feedback é imprescindível -
Maia,
Eu desconhecia esta situação que você identificou, utilizei muito pouco o XP_Cmdshell neste tipo de procedimento, é bom saber!!!!
Em relação a área de memória(MenToLeave) eu não consigo entender o porque a Microsoft não aumenta um pouco esta limitação de 256 Mbs, pois se conseguir instânciar uma quantidade de informações superior este valor, seria o caso de tentar melhorar isso.
Por outro lado, penso que pode ser um risco aumentar esta área, pois poderemos estar forçando uma sobrecarga no SQL Server para realizar o processamento do que esta alocado, sendo assim, derrubando o próprio serviço e correndo o risco de perda de dados.
O que você acha?
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário] -
Além dos problemas citados pelo gustavo. No meu ambiente, quando mais de um job roda ao mesmo tempo compactando um arquivo através de um comando cmdshell que utiliza o fillzip, esses processos ficam agarrados no servidor. Quando isso acontece, tenho que logar no servidor e matar os processos do fillzip.
Estava tentando criar um código em C# e fazer um deploy de uma procedure no SQL Server(CLR). Entretanto, não obtive sucesso.
Caso alguém já tenha feito algo parecido, seria de grande ajuda.
Fabrício França Lima | MCP, MCTS, MCITP | Visite meu site: http://fabriciodba.spaces.live.com/ - Novo Post: Passo a passo para encontrar as querys mais demoradas do Banco de Dados -
Fabrício,
Então, por isso a melhor solução seria trabalhar com compressão de dados ou backup compactado no SQL Server 2008, ao invês de ficar utilizando ferramentas e processos externos para realizar este tipo de compactação.
Acredito que você esteja utilizando o SQL Server 2005!!!!
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário] -
Ainda estou utilizando o SQL Server 2005 sim.
A compressão de backup foi resolvida no sql server 2008, mas também tenho esse problema para compactar relatórios gerados via SSIS e SSRS.
Fabrício França Lima | MCP, MCTS, MCITP | Visite meu site: http://fabriciodba.spaces.live.com/ - Novo Post: Passo a passo para encontrar as querys mais demoradas do Banco de Dados -
Pessoal bom dia,
Quero agradecer a colaboração de todos, mais eu ainda não consegui resolver o meu problema o SQL Server que eu estou usar é o 2005.
Alguem tem algum arquivo .BAT pronto.
para que eu possa utilizar, uma observação pessoal é que todos os BKP do dia eu salvo com a data do dia...
como seria mais ou menos o arquivo .BAT para fazer isso automatico? porque eu estou penssar criar esse arquivo e colocar no Agendador do Windows.
-
No meu ambiente utilizo a seguinte procedure para zipar um arquivo. O Filzip precisa estar instalado no caminho C:\Filzip\Filzip.exe.
CREATE PROCEDURE [dbo].[stpCompacta_Arquivo] ( @Nm_Zip varchar(1000), @Nm_Arquivo varchar(1000), @Falhar tinyint)
AS BEGINDECLARE @Comando varchar(3000)
SET @Comando = 'C:\Filzip\Filzip.exe -a -r "'+@Nm_Zip+'" "'+@Nm_Arquivo+'"'
EXEC master..xp_cmdshell @Comando, no_output
IF (OBJECT_ID('TempDB..#Diretorio') IS NOT NULL) DROP TABLE #Diretorio
CREATE TABLE #Diretorio ( Arquivo varchar(5000) )DECLARE @Index tinyint
SET @Index = Len(@Nm_Zip) - charIndex('\',Reverse(@Nm_Zip))DECLARE @Pasta varchar(1000)
SET @Pasta = SubString(@Nm_Zip,1,@Index)
SET @Comando = 'dir /b "'+@Pasta+'"'INSERT INTO #Diretorio
EXEC Master..XP_CmdShell @ComandoDECLARE @Zip varchar(1000)
SET @Zip = SubString(@Nm_Zip,@Index+2,Len(@Nm_Zip))IF (NOT EXISTS (SELECT * FROM #Diretorio WHERE Arquivo = @Zip) AND @Falhar = 1) SELECT 1/0
Fabrício França Lima | MCP, MCTS, MCITP | Visite meu site: http://fabriciodba.spaces.live.com/- Sugerido como Resposta Fabricio França Lima segunda-feira, 5 de julho de 2010 12:56