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站点.
希望这可以帮助!
小李的回答几乎是正确的,只是你没有需要创建另一个表来移动数据。
根据我自己测试的答案,在创建文件组后,您只需要将聚集索引移动到另一个文件组即可。如果没有聚集索引,则可以创建一个索引来帮助您完成此过程。如果您还具有非聚集索引,请将它们也移动。完成后,所有数据将自动在文件组之间移动。
因此,如果要从备份例程中排除此大表,请执行以下操作:
创建一个新的文件组。
USE [master]
ALTER DATABASE [MyDatabase] ADD FILEGROUP [FG_MYBIGTABLE]
Run Code Online (Sandbox Code Playgroud)将新文件添加到该文件组。
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)通过使用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)移动其他索引。
CREATE NONCLUSTERED INDEX [IX_OtherTable]
ON MyDatabase.dbo.MyBigTable (OtherTable_ID)
WITH DROP_EXISTING, ONLINE
ON FG_MYBIGTABLE
Run Code Online (Sandbox Code Playgroud)备份引用PRIMARY文件组的数据库。
BACKUP DATABASE MyDatabase
FILEGROUP = 'PRIMARY',
TO DISK = 'C:\Backups\MyBackup.bak'
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
8449 次 |
| 最近记录: |