Резервное копирование базы данных MSSQL без определенной таблицы

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

3 ответов


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

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) Backup PRIMARY, который теперь исключает таблицу, которая теперь находится в файловой группе "EXAMPLEFG1".

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

Если вы решили сделать резервную копию EXAMPLEFG1 просто измените значение файловой группы на "EXAMPLEFG1" в приведенном выше запросе.

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

надеюсь, что это помогает!


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

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

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

  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. резервное копирование базы данных, ссылающейся на основную файловую группу.

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

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