none
Restaurar Grupo de Archivos RRS feed

  • Pregunta

  • Saludos cordiales,

    Pruebo la restauracion de grupo de archivos para poder restaurar solo una tabla de la base de datos, pero no se que estoy haciendo mal.

    Creo una base de datos con dos filegroups creados en archivos distintos:

    CREATE DATABASE [BD1] ON  PRIMARY
    ( NAME = N'BD1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\BD1.mdf' , SIZE = 2048KB , FILEGROWTH = 1024KB ),
     FILEGROUP [FG1]
    ( NAME = N'FG1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\FG1.ndf' , SIZE = 2048KB , FILEGROWTH = 1024KB )
     LOG ON
    ( NAME = N'BD1_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\BD1_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
    GO

    Creo dos tablas. Una en primary y una en el filegroup "FG1"

    CREATE TABLE dbo.Table_1
        (
        campo1 nchar(10) NULL
        )  ON [PRIMARY]
    GO
    ALTER TABLE dbo.Table_1 SET (LOCK_ESCALATION = TABLE)
    GO

    CREATE TABLE dbo.Table_2
        (
        campo2 nchar(10) NULL
        )  ON FG1
    GO
    ALTER TABLE dbo.Table_2 SET (LOCK_ESCALATION = TABLE)
    GO

    Inserto datos en ambas tablas:

    INSERT INTO Table_1(campo1) VALUES (1)
    INSERT INTO Table_1(campo1) VALUES (2)
    INSERT INTO Table_1(campo1) VALUES (3)

    INSERT INTO Table_2(campo2) VALUES (1)
    INSERT INTO Table_2(campo2) VALUES (2)
    INSERT INTO Table_2(campo2) VALUES (3)

    Hago un Full Backup

    BACKUP DATABASE [BD1] TO  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\BD1.bak' WITH NOFORMAT, NOINIT,  NAME = N'BD1-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
    GO

    Esta claro que con esto puedo recuperar toda la BD con los cambios a este momento.

    Hago un backup FULL del Filegroup

    BACKUP DATABASE [BD1] FILEGROUP = N'FG1' TO  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\BD1.bak' WITH NOFORMAT, NOINIT,  NAME = N'BD1-Full Filegroup Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
    GO

    Borro 2 registros en la Tabla creada en el Filegroup

    DELETE FROM dbo.Table_2 WHERE campo2 > 1

    Pregunta. Puedo restaurar esta tabla a partir del Filegroup Backup? No hallo como hacerlo? Si restauro el Filegroup Backup queda en un modo inactivo. Tengo que hacer un Log Backup antes? Lo probe asi y restauro Full Log Backup y Log y tampoco quedo con los datos como antes de Full Filegroup Backup


    lunes, 4 de marzo de 2013 18:30

Respuestas

Todas las respuestas

  • Hola Julio,

    En las restauraciones por etapas (piecemal restore) siempre debes restaurar almenos el grupo de ficheros principal (primary), y después el FileGroup que desees restaurar. Leéte en detalle el siguiente articulo: http://msdn.microsoft.com/es-es/library/ms177425.aspx

    En ella encontrarás el siguiente párrafo:

    "<sentencetext xmlns="http://www.w3.org/1999/xhtml">La primera instrucción RESTORE de la fase inicial debe realizar lo siguiente: </sentencetext><sentencetext xmlns="http://www.w3.org/1999/xhtml">Usar una copia de seguridad parcial o completa de la base de datos que incluya el grupo de archivos principal y todos los grupos de archivos que eran de lectura/escritura al hacer la copia de seguridad.</sentencetext><sentencetext xmlns="http://www.w3.org/1999/xhtml">Es normal comenzar una secuencia de restauración parcial mediante la restauración de una copia de seguridad parcial."</sentencetext>

    <sentencetext xmlns="http://www.w3.org/1999/xhtml">Espero que te sirva.</sentencetext>

    Saludos.


    Ferran Chopo
    MCPD Web, MCITP SQL Server
    Web: http://www.ferranchopo.com Twitter: @fchopo

    martes, 5 de marzo de 2013 9:50
  • Lo lei, pero hay algo que no comprendo es para que se respalda un parte de la BD (Filegroup) si hay que restaurarla completa? Es decir si tengo que hacer un FULL para que hacer un Backup del Grupo de Archivos?

    Supongo entonces que es mas diseno. Explico el caso. Hay una BD que ya llego a mi mano con unas tablas de gran volumen transaccional. Millones de registros (se acepta perder algo de esas tablas en caso de desastres), pero en la misma BD hay una tabla de la que no se quiere perder nada.

    Entonces tengo que respaldar toda la BD (Gigante cientos de Gigas) para tener respaldada las tablas pequenas (Que estan en otro Group File y que ocupa unos cuentos megas)?

    Supongo que seria mas facil mover esas tablas "pequenas" a otra BD que si respalde completa y ya.

    martes, 5 de marzo de 2013 15:31
  • Hola Julio,

    Tienes que tener almenos un backup completo de la BBDD para poder hacer después la restauración por partes. Por lo tanto, no podrás ahorrarte ese backup de las tablas tan grandes.

    Ciertamente la opción que comentas te serviria si realmente quieres ahorrarte tiempo y espacio.

    Saludos.


    Ferran Chopo
    MCPD Web, MCITP SQL Server
    Web: http://www.ferranchopo.com Twitter: @fchopo

    miércoles, 6 de marzo de 2013 10:36