没有特定表的MSSQL DataBase Backup

Jud*_*ara 13 sql-server database-backups sql-server-2008

我需要在sql中没有特定表的情况下进行计划备份.因为如果我使用该表进行备份,则需要很长时间.我需要从备份中排除一个表.可能吗?没有该表,所有表和数据都应该存在于数据库中.

Mik*_*sky 15

除PRIMARY文件组外,您可以为此一个表设置单独的文件组.这将使您能够创建省略大表的备份.以下是逐步完成该过程的示例.

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

USE [master]
GO
ALTER DATABASE [EXAMPLEDB] ADD FILEGROUP [EXAMPLEFG1]
GO
Run Code Online (Sandbox Code Playgroud)

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

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

GO
Run Code Online (Sandbox Code Playgroud)

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

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

5)备份PRIMARY,现在排除现在位于文件组"EXAMPLEFG1"的表.

BACKUP DATABASE EXAMPLE
   FILEGROUP = 'PRIMARY',
   TO DISK = '<Your Directory>'
GO
Run Code Online (Sandbox Code Playgroud)

如果您决定备份EXAMPLEFG1,只需在上面的查询中将FILEGROUP值更改为"EXAMPLEFG1".

有关文件组备份的详细信息,请查看此Microsoft站点.

希望这可以帮助!


Zan*_*non 7

小李的回答几乎是正确的,只是你没有需要创建另一个表来移动数据。

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

因此,如果要从备份例程中排除此大表,请执行以下操作:

  1. 创建一个新的文件组。

    USE [master]  
    ALTER DATABASE [MyDatabase] ADD FILEGROUP [FG_MYBIGTABLE]
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 通过使用DROP_EXISTING旧索引创建另一个索引来移动聚集索引。

    CREATE UNIQUE CLUSTERED INDEX CIX_MyBigTable
    ON MyDatabase.dbo.MyBigTable (ID)
    WITH DROP_EXISTING, ONLINE
    ON FG_MYBIGTABLE
    
    Run Code Online (Sandbox Code Playgroud)
  4. 移动其他索引。

    CREATE NONCLUSTERED INDEX [IX_OtherTable] 
    ON MyDatabase.dbo.MyBigTable (OtherTable_ID)
    WITH DROP_EXISTING, ONLINE
    ON FG_MYBIGTABLE
    
    Run Code Online (Sandbox Code Playgroud)
  5. 备份引用PRIMARY文件组的数据库。

    BACKUP DATABASE MyDatabase
    FILEGROUP = 'PRIMARY',
    TO DISK = 'C:\Backups\MyBackup.bak'
    
    Run Code Online (Sandbox Code Playgroud)