Usuário com melhor resposta
Backup/Restore de FileGroup

Pergunta
-
Olá,
Li bastante sobre backups e restores de filegroups, e bom, tudo OK. menos pelo o que eu preciso.
Tenho os servidores A e B
No servidor A tenho a base X com o filegroup primary e algumas tabelas no filegroup MOVE
Preciso tirar o backup deste filegroup MOVE diariamente e restaurar em uma base no servidor B
Porem não estou conseguindo isso...alguem poderia dizer como faz?
Fabrizzio A. Caputo
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCTS SQL Server 2008
Developer Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com
Respostas
-
Boa Tarde Fabrizzio,
Vou entrar em reunião daqui há pouco e não vou conseguir postar os códigos (rs), mas vamos lá:
Para restaurar um FILEGROUP em Partial Restore será sempre necessário restaurar o PRIMARY então eu sugiro os seguintes passos:
- Faça um backup do PRIMARY
- Faça um backup do Move
- Tire um backup de logNo novo servidor faça o seguinte:
- Não crie nenhuma base
- Restaure o PRIMARY
- Restaure o MOVE (Partial Restore)
- Aplique o LOGAgora que a base existe no novo servidor (só com o PRIMARY e o MOVE) e refere-se ao mesmo banco do servidor antigo, você pode repetir o procedimento, mas nas próximas restaurações, use o REPLACE.
Esse procedimento eu sei que funciona, mas ainda não testei se o RESTORE de FILEGROUP funciona com mecanismos de Stand By. Se você for alterar os dados no backup recém restaurado no outro servidor, então só nos resta a estratégia anterior, ou seja, restaurar sempre o PRIMARY e o MOVE. Se você for realmente só ler no novo servidor, então poderíamos testar o Stand By com o Restore de FILEGROUP (aplicar só os logs subsequentes), mas se for esse o caso, não seria melhor restaurar o FULL por completo e aplicar somente os logs com Stand By ?
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Rafael Godoi Sabadin quinta-feira, 28 de julho de 2011 18:16
- Marcado como Resposta Fabrizzio CaputoModerator quinta-feira, 28 de julho de 2011 19:33
Todas as Respostas
-
No object explorer, clique com o botão direto em cima da base x -> talks -> backup, em componente de backup escolha a opção files and filegroups, escolha o filegroup desejado. As outas opções são similares as opções de backup da base.
Para restaurar clique com o botão direito na base do servidor b ->talks -> restore -> files and filegroups.
Até mais.
Rafael Godoi Sabadin
http://www.linkedin.com/pub/rafael-godoi-sabadin/30/b20/a0b
Classifique as respostas. O seu feedback é essencial.
-
Rafael,
Em relação ao criar backups, tudo bem, sem problemas, mas não existe essa opção na GUI de restore.
Estou tentando tambem um Partial Restore, aonde atravez do backup de um FileGroup criar uma nova base, isso ja me atenderia, mas por enquanto sem sucesso....
Estou tentando rodar este comando:
----------------------CRIAÇÃO DA BASE PRIMARIA-----------------------------------------
USE [master]
GO
CREATE DATABASE [DB1] ON PRIMARY
( NAME = N'DB_1', FILENAME = N'D:\DataFiles\DB1.mdf' , SIZE = 5MB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%),
FILEGROUP [FG1]
( NAME = N'FG_DT1', FILENAME = N'D:\DataFiles\FG_DT1_DB1.ndf' , SIZE = 5MB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%),
FILEGROUP [FG2]
( NAME = N'FG_DT2', FILENAME = N'D:\DataFiles\FG_DT2_DB1.ndf' , SIZE = 5MB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%)
LOG ON
( NAME = N'DB1_log', FILENAME = N'D:\DataFiles\DB1_log.ldf' , SIZE = 5MB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'DB1', @new_cmptlevel=90
GO
-----------------------CRIAÇÃO DA BASE SECUNDARIA----------------------------------------
USE [master]
GO
CREATE DATABASE [DB2] ON PRIMARY
( NAME = N'DB_2', FILENAME = N'D:\DataFiles\DB2.mdf' , SIZE = 5MB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%),
FILEGROUP [FG1]
( NAME = N'FG_DT1', FILENAME = N'D:\DataFiles\FG_DT1_DB2.ndf' , SIZE = 5MB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%),
FILEGROUP [FG2]
( NAME = N'FG_DT2', FILENAME = N'D:\DataFiles\FG_DT2_DB2.ndf' , SIZE = 5MB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%)
LOG ON
( NAME = N'DB2_log', FILENAME = N'D:\DataFiles\DB2_log.ldf' , SIZE = 5MB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'DB2', @new_cmptlevel=90
GO
------------------------CRIANDO TABELA-------------------------------------------------
USE DB1
GO
CREATE TABLE T1(ID INT IDENTITY(1,1), FName NVARCHAR(20)) ON FG1
INSERT T1(FName) SELECT 'Name1'
GO
------------------------CRIANDO BACKUP DO FILEGROUP--------------------------------------
USE MASTER
GO
BACKUP DATABASE [DB1]
FILEGROUP = N'FG1'
TO DISK = N'D:\DataFiles\Backups\Parcial\DB1_Full_FilegroupFG1Backup.BAK'
WITH NOFORMAT, INIT,
NAME = N'FG1BKP',
SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
-------------------------RESTAURANDO O FILEGROUP--------------------------------------------
USE MASTER
GO
RESTORE DATABASE [DB2]
FILE = N'FG_DT1'
FROM DISK = N'D:\DataFiles\Backups\Parcial\DB1_Full_FilegroupFG1Backup.BAK'
WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10
GO
Porem ao executar a parte final do restore, tenho o seguinte erro:
Msg 3154, Level 16, State 4, Line 1
The backup set holds a backup of a database other than the existing 'DB2' database.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
Fabrizzio A. Caputo
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCTS SQL Server 2008
Developer Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com
-
Fabrizzio,
Tente assim:
USE MASTER
GO
RESTORE DATABASE [DB2]
FILE = N'FG_DT1',
FILEGROUP = N'FG1'
FROM DISK = N'D:\DataFiles\Backups\Parcial\DB1_Full_FilegroupFG1Backup.BAK'
WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10
GO
Tambem dê uma olhada no modelo de recovery.
Rafael Godoi Sabadin
http://www.linkedin.com/pub/rafael-godoi-sabadin/30/b20/a0b
Classifique as respostas. O seu feedback é essencial.
-
Rafael,
Mesma coisa, os recovery model estão em full, nas 2 bases.
Fabrizzio A. Caputo
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCTS SQL Server 2008
Developer Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
Fabrizzio,
Dei uma pesquisada, segue a sugestão:
USE MASTER
GO
RESTORE DATABASE [DB2]
FILE = N'FG_DT1',
FILEGROUP = N'FG1'
FROM DISK = N'D:\DataFiles\Backups\Parcial\DB1_Full_FilegroupFG1Backup.BAK'
WITH FILE = 1,
MOVE N'FG_DT1'
TO N'D:\DataFiles\FG_DT1_DB2.ndf', NORECOVERY,
NOUNLOAD, REPLACE, STATS = 10
GOAcho que o link a seguir pode te ajudar: http://social.technet.microsoft.com/Forums/pt-BR/admingeralpt/thread/ecb47dec-7937-4cef-8eab-548abe8f407a/
Rafael Godoi Sabadin
http://www.linkedin.com/pub/rafael-godoi-sabadin/30/b20/a0b
Classifique as respostas. O seu feedback é essencial.
-
Boa Tarde,
Há alguns impecilhos que não vão viabilizar que isso realmente funcione.
O primeiro e mais simples item é que você não pode restaurar um banco por cima de outro existente senão for o mesmo banco. Se você criou o banco DB1 e fez o backup do banco DB1, o RESTORE deverá criar o banco DB1 ou ser restaurado por cima de um banco DB1 já existente (ou restaurado a partir de um outro backup). Você não pode simplesmente criar um banco DB2 e pedir para ele ser sobrescrito por um Restore do banco DB1 já que são banco diferentes (por isso o erro "The backup set holds a backup of a database other than the existing 'DB2' database.", ou seja, o backup refere-se ao banco DB1 e o banco a ser sobrescrito é DB2. Nesse caso, é mais interessante matar o banco DB2 e apenas restaurar o banco DB1 deixando que o próprio RESTORE crie o banco e não sobrescreva um já existente. Opcionalmente, o primeiro restore da base DB1 não irá sobrescrever nada, mas cria um banco no próprio Restore. As restaurações subsequentes poderão sobrescrevê-lo, pois, tratar-se-á de um banco DB1 (ainda que uma restauração).
Quanto ao Restore dos FILEGROUPs, creio haver um certo equívoco de como eles realmente funcionam. O FILEGROUP PRIMARY é o que possui as definições dos objetos e será sempre necessário em qualquer processo de restauração (mesmo um Partial Restore). No seu caso, o FILEGROUP FG1 contém apenas os dados das tabelas, mas é no PRIMARY que estão as lista de colunas, constraints e outros objetos. Não seria possível restaurar o FG1 separadamente, pois, teríamos um monte de dados sem qualquer noção de suas estruturas. De forma análoga ao ORACLE é como querer voltar uma base sem a TABLESPACE SYSTEM, ou seja, sem os metadados não faria sentido algum.
Se você possui apenas dois FILEGROUPs, não será proveitoso trabalhar com o Partial Restore com o FILEGROUP FG1, pois, você poderá restaurar no máximo o PRIMARY sozinho, ou o PRIMARY com o FG1 (que é idêntico a um FULL). Não será possível restaurar o FG1 sem o PRIMARY. Um projeto baseado em FILEGROUPs normalmente isola o PRIMARY e não cria nenhum objeto nele para deixá-lo exclusivamente com metadados. Assim, quando você for restaurar apenas um FILEGROUP, você restaura o PRIMARY e esse FILEGROUP. O PRIMARY com os metadados, o outro FILEGROUP (FG1) com os dados de fato.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível -
gustavo,
É exatamente esse meu cenario, terei 3 files groups: Primary, main e move
O filegroup move eu preciso passar ele para outro servidor, bom, entendi que não posso então ir restaurando-o em cima, então eu precisaria criar uma nova base a partir dele certo? Qual seria exatamente os steps? (Se puder ajudar com a codificação tambem eu ficaria agradecido...)
Não havera dados a não ser o dicionario no primary, main tabelas comuns, e move tabelas que irao ser movidas, lembrando que nenhuma tabela do grupo move tera relacionamento com alguma do grupo main.
Fabrizzio A. Caputo
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCTS SQL Server 2008
Developer Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
Boa Tarde Fabrizzio,
Vou entrar em reunião daqui há pouco e não vou conseguir postar os códigos (rs), mas vamos lá:
Para restaurar um FILEGROUP em Partial Restore será sempre necessário restaurar o PRIMARY então eu sugiro os seguintes passos:
- Faça um backup do PRIMARY
- Faça um backup do Move
- Tire um backup de logNo novo servidor faça o seguinte:
- Não crie nenhuma base
- Restaure o PRIMARY
- Restaure o MOVE (Partial Restore)
- Aplique o LOGAgora que a base existe no novo servidor (só com o PRIMARY e o MOVE) e refere-se ao mesmo banco do servidor antigo, você pode repetir o procedimento, mas nas próximas restaurações, use o REPLACE.
Esse procedimento eu sei que funciona, mas ainda não testei se o RESTORE de FILEGROUP funciona com mecanismos de Stand By. Se você for alterar os dados no backup recém restaurado no outro servidor, então só nos resta a estratégia anterior, ou seja, restaurar sempre o PRIMARY e o MOVE. Se você for realmente só ler no novo servidor, então poderíamos testar o Stand By com o Restore de FILEGROUP (aplicar só os logs subsequentes), mas se for esse o caso, não seria melhor restaurar o FULL por completo e aplicar somente os logs com Stand By ?
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Rafael Godoi Sabadin quinta-feira, 28 de julho de 2011 18:16
- Marcado como Resposta Fabrizzio CaputoModerator quinta-feira, 28 de julho de 2011 19:33
-
Oi Fabrizzio,
Agora eu me confundi (rs). Não entendi muito bem o seu cenário e nem como o Backup de Filegroup se encaixa.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível -
Oi Fabrizzio,
Chama ele pro fórum então (rs).
Quando você diz Shared Database, está se referindo ao Large Scalable Shared Databases do SQL Server ?
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível -
Exatamente...
link bol é esse aqui: ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_4deptrbl/html/e1d2a62d-95f6-4839-be8f-53cb9a2c3981.htm
Fabrizzio A. Caputo
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCTS SQL Server 2008
Developer Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
Oi Fabrizzio,
O Large Scalable Shared Database não funciona dessa maneira e não dependerá de Filegroups e Restores. Em linhas gerais:
- Você instala múltiplas instâncias de SQL Server
- Você atacha a mesma base em cada instância
- Todas as instâncias lêem a mesma base simultaneamenteClaro que há várias restrições como a base tem de ser somente leitura, quando a base necessitar ser atualizada você terá que desatachar todo mundo e deixar só uma instância atachar além do que é necessário ter o Windows Storage Server para gerenciar. Você vai conseguir obedecer esses pré-requisitos básicos ?
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível -
Gustavo,
Acho que com tanta informação, me perdi um pouco no processo que aplicaremos aqui, vou me informar mais, qualquer coisa volto a te perturbar rs...( Alias, bem fora do topico, parabens e obrigado pelos artigos de XML, realmente muito didaticos e praticos, aprendi muito)
Fabrizzio A. Caputo
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCTS SQL Server 2008
Developer Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
Oi Fabrizzio,
Tranquilo. No que eu puder ajudar estamos aí...
[OFF]Que bom que gostou dos artigos. Fico feliz que puderam ajudá-lo. Estava bem animado quando os escrevi[/OFF]
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível