数据库:备份一些具有数据+模式的表,以及仅具有模式的其他表

时间:2019-05-03 06:58:40

标签: sql-server sql-server-2012 sql-server-2008-r2

在我们的数据库中,我们有与应用程序相关的数据表和与交易相关的数据表。由于事务表中有大量记录,因此在备份时我想忽略它们。因此,基本上,当我运行调度程序时,我想要与应用程序相关的表的架构+数据,而仅与事务相关的数据表的架构。 建议我使用生成脚本。但是我不确定是否可以使用,因为我的应用程序表相互链接,并且我的主键列通常是标识列。

1 个答案:

答案 0 :(得分:0)

  

使用数据+模式备份一些表,仅使用模式备份其他表

在这种情况下,常规SQL Server备份功能根本无法使用,因为无法拆分数据和结构,也无法避免备份某些表。

即使您将执行文件组备份,也并不意味着您只能还原该文件组并保留其他表。文件组备份只是无法通过这种方式工作。

因此,脚本可以是一种解决方案:

    1. 为较小的表创建数据和结构脚本
    1. 创建仅具有事务表结构的脚本

另一种方法是将必要的数据和结构转储到具有进一步备份的单独数据库中:

类似的东西:

SELECT * INTO ExportDB.dbo.Table1
SELECT * INTO ExportDB.dbo.Table2
SELECT * INTO ExportDB.dbo.Table3
--- two tables below will  have no data, only a structure
SELECT * INTO ExportDB.dbo.Table4 WHERE 1=0 -- A large transactional table 1
SELECT * INTO ExportDB.dbo.Table5 WHERE 1=0 -- A large Transactional table 1

BACKUP DATABASE ExportDB TO DISK='..'
DROP DATABASE ExportDB

但是,本机备份(这不是您的方案的选择)可以确保由PK和FK强制执行的数据一致性,而我后面提到的自定义选项并不能真正保证

参考: How can I take backup of particular tables in SQL Server 2008 using T-SQL Script