没有特定 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,请执行以下操作:
新建文件组。
USE [master]
ALTER DATABASE [MyDatabase] ADD FILEGROUP [FG_MYBIGTABLE]
向该文件组添加一个新文件。
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
通过使用 DROP_EXISTING
旧索引创建另一个来移动聚集索引。
CREATE UNIQUE CLUSTERED INDEX CIX_MyBigTable
ON MyDatabase.dbo.MyBigTable (ID)
WITH DROP_EXISTING, ONLINE
ON FG_MYBIGTABLE
移动其他索引。
CREATE NONCLUSTERED INDEX [IX_OtherTable]
ON MyDatabase.dbo.MyBigTable (OtherTable_ID)
WITH DROP_EXISTING, ONLINE
ON FG_MYBIGTABLE
备份引用主文件组的数据库。
BACKUP DATABASE MyDatabase
FILEGROUP = 'PRIMARY',
TO DISK = 'C:\Backups\MyBackup.bak'
我需要在 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".
上的 tableBACKUP DATABASE EXAMPLE
FILEGROUP = 'PRIMARY',
TO DISK = '<Your Directory>'
GO
如果您决定备份 EXAMLEFG1 只需将上述查询中的 FILEGROUP 值更改为 "EXAMPLEFG1"。
查看此 Microsoft site 了解有关文件组备份的更多信息。
希望对您有所帮助!
Mike 的
根据我自己测试的this answer,创建一个文件组后,你只需要将聚簇索引移动到另一个文件组即可。如果您没有聚簇索引,您可以创建一个聚簇索引来帮助您完成此过程。如果您也有非聚集索引,请也移动它们。完成后,所有数据将自动在文件组之间移动。
因此,如果您想从备份例程中排除这个大 table,请执行以下操作:
新建文件组。
USE [master] ALTER DATABASE [MyDatabase] ADD FILEGROUP [FG_MYBIGTABLE]
向该文件组添加一个新文件。
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
通过使用
DROP_EXISTING
旧索引创建另一个来移动聚集索引。CREATE UNIQUE CLUSTERED INDEX CIX_MyBigTable ON MyDatabase.dbo.MyBigTable (ID) WITH DROP_EXISTING, ONLINE ON FG_MYBIGTABLE
移动其他索引。
CREATE NONCLUSTERED INDEX [IX_OtherTable] ON MyDatabase.dbo.MyBigTable (OtherTable_ID) WITH DROP_EXISTING, ONLINE ON FG_MYBIGTABLE
备份引用主文件组的数据库。
BACKUP DATABASE MyDatabase FILEGROUP = 'PRIMARY', TO DISK = 'C:\Backups\MyBackup.bak'