没有特定 table 的 MSSQL 数据库备份

MSSQL DataBase Backup without a specific table

我需要在 sql 中进行没有特定 table 的计划备份。因为如果我用 table 进行备份,将需要很长时间。我需要从备份中排除一个 table。可能吗?没有那个 table 所有 table 和数据都应该在数据库中。

除了 PRIMARY 文件组之外,您还可以为此设置一个单独的文件组 table。这将使您能够创建省略大 table 的备份。下面是一个逐步执行该过程的示例。

1) 为您的数据库创建一个新的文件组。

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

2) 在新文件组上创建一个相同的 table,名称略有不同。

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

GO

3) 将原始 table 中的记录插入新的 table.

4) 删除旧的 table 并更正新的 table 的名称以匹配旧的 table.

的名称

5) 备份 PRIMARY,现在排除了文件组 "EXAMPLEFG1".

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

如果您决定备份 EXAMLEFG1 只需将上述查询中的 FILEGROUP 值更改为 "EXAMPLEFG1"。

查看此 Microsoft site 了解有关文件组备份的更多信息。

希望对您有所帮助!

Mike 的 几乎是正确的,只是您 不需要 创建另一个 table 来移动数据。

根据我自己测试的this answer,创建一个文件组后,你只需要将聚簇索引移动到另一个文件组即可。如果您没有聚簇索引,您可以创建一个聚簇索引来帮助您完成此过程。如果您也有非聚集索引,请也移动它们。完成后,所有数据将自动在文件组之间移动。

因此,如果您想从备份例程中排除这个大 table,请执行以下操作:

  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'