2015-11-19 4 views
3

Мне нужно выполнить резервное копирование расписания без конкретной таблицы в sql. Потому что, если я возьму резервную копию с этой таблицей, это займет много времени. Мне нужно исключить одну таблицу из резервной копии. Является ли это возможным? Без этой таблицы все таблицы и данные должны находиться в базе данных.Резервное копирование базы данных MSSQL без конкретной таблицы

+0

представляет данные в этой одной таблицы неважно? Почему так много неважных данных? Цель резервного копирования (вообще говоря) должна использоваться в случае проблемы с db, чтобы вы могли восстановить. Если вы не создаете резервную копию всей БД, вы не можете восстановить всю БД. Если бы это была достаточно большая таблица, чтобы иметь столько данных, я бы подумал, что это будет важно для некоторого процесса. – Kritner

ответ

7

Вы можете настроить отдельную группу файлов для этой таблицы, кроме группы файлов PRIMARY. Это даст вам возможность создать резервную копию, которая опускает вашу большую таблицу. Ниже приведен пример, который устраняет этот процесс.

1) Создайте новую группу файлов для своей базы данных.

USE [master] 
GO 
ALTER DATABASE [EXAMPLEDB] ADD FILEGROUP [EXAMPLEFG1] 
GO 

2) Создайте идентичную таблицу с немного другим именем в новой группе файлов.

CREATE TABLE [dbo].[example] 
(
    [e] [int] NOT NULL 
) 
ON [EXAMPLEFG1] 

GO 

3) Вставьте записи из исходной таблицы в новую таблицу.

4) Удалите старую таблицу и исправьте имя новой таблицы в соответствии с именем старой таблицы.

5) Резервное копирование PRIMARY, которое теперь исключает таблицу, которая теперь находится в группе файлов «EXAMPLEFG1».

BACKUP DATABASE EXAMPLE 
    FILEGROUP = 'PRIMARY', 
    TO DISK = '<Your Directory>' 
GO 

Если вы решили сделать резервную копию EXAMPLEFG1 просто изменить значение FileGroup к «EXAMPLEFG1» в приведенном выше запросе.

Для получения дополнительной информации о резервных копиях файловой группы ознакомьтесь с этим Microsoft site.

Надеюсь, это поможет!

+0

Мне нужно создать резервную копию всей базы данных без одной таблицы, возможно ли это с этим? –

+0

Да, вы размещаете большую таблицу вне группы файлов PRIMARY в дополнительной группе файлов и создаете резервную копию группы файлов PRIMARY, которая пропускает большую таблицу. Вот моя рекомендация, если вы не уверены и хотите, чтобы вы сделали все правильно, я бы воспользовался вашей последней резервной копией этой базы данных и восстановил ее до другого экземпляра; Таким образом, вы можете практиковать шаги и следить за тем, чтобы все работало должным образом. Кроме того, обязательно прочтите ссылки, которые я предоставил, особенно сайт «Microsoft Link». Надеюсь это поможет! –

1

Вы не можете исключить таблицу из резервной копии. Это отчасти определяет резервную копию, все это, а не ее часть. Тем не менее, вы можете найти некоторые способы обойти это. Один из способов: может сделать это, создав вторую базу данных и скопировав все данные из вашей базы данных, кроме этой таблицы, в эту базу данных и резервного копирования копии. Вы можете использовать репликацию для копирования ваших данных и исключения таблицы и резервного копирования реплицируемой базы данных. Проблема в том, что любой из них может занять больше времени из-за количества данных в остальной части базы данных.

+0

Как это в моей БД, у меня есть данные изображения 1 тб, хранящиеся в одной таблице, поэтому мы решили перенести эту таблицу на новую позже и возьмем резервную копию, исключая таблицу. Как это сделать? –

2

Mike's answer почти правильно, за исключением того, что вам не нужно необходимо создать другую таблицу для перемещения данных.

Согласно this answer, который я проверил самостоятельно, после создания файловой группы вам просто нужно переместить кластеризованный индекс в другую файловую группу. Если у вас нет кластерного индекса, вы можете создать его, чтобы помочь вам в этом процессе. Если у вас также есть некластеризованные индексы, переместите их тоже. После того, как вы закончите, все данные будут перемещены между файловыми группами автоматически.

Итак, если вы хотите, чтобы исключить эту большую таблицу из резервного рутина, выполните следующие действия:

  1. Создать новую группу файлов.

    USE [master] 
    ALTER DATABASE [MyDatabase] ADD FILEGROUP [FG_MYBIGTABLE] 
    
  2. Добавить новый файл в эту группу.

    ALTER DATABASE [MyDatabase] 
    ADD FILE 
    (
        name = MyDatabase_MyBigTable, 
        filename = 'C:\DB_Files\MyDatabase_MyBigTable.ndf', 
        size = 1024MB, 
        maxsize = unlimited, 
        filegrowth = 100MB 
    ) 
    TO FILEGROUP FG_MYBIGTABLE 
    
  3. Перемещение кластерного индекса, создав другой с DROP_EXISTING старого.

    CREATE UNIQUE CLUSTERED INDEX CIX_MyBigTable 
    ON MyDatabase.dbo.MyBigTable (ID) 
    WITH DROP_EXISTING, ONLINE 
    ON FG_MYBIGTABLE 
    
  4. Перемещение других индексов.

    CREATE NONCLUSTERED INDEX [IX_OtherTable] 
    ON MyDatabase.dbo.MyBigTable (OtherTable_ID) 
    WITH DROP_EXISTING, ONLINE 
    ON FG_MYBIGTABLE 
    
  5. Резервное копирование базы данных, ссылающейся на группу файлов PRIMARY.

    BACKUP DATABASE MyDatabase 
    FILEGROUP = 'PRIMARY', 
    TO DISK = 'C:\Backups\MyBackup.bak'