不使用存储过程备份 SQL Server 2008 R2 数据库

不使用存储过程备份 SQL Server 2008 R2 数据库

是否可以备份 SQL Server 数据库,但只备份表结构和内容(即不包括存储过程、视图等?)

场景:

我们有一个数据中心托管产品,每个客户都有一个唯一的数据库。

对于许多客户,我们需要每天向他们提供一份数据副本,以便导入他们的数据仓库,以便实时交易系统能够很好地提供报告功能。

因此,目前,我们每天对生产数据库进行一次完整备份,将其还原到“暂存”服务器,在该服务器中我们运行清理脚本来删除视图和存储过程(因为我们对 Sps/views 等中的代码的 IPR 很重要),然后我们备份它并导出到它们。

这导致每天都会发送大量数据库。

他们发现每天下载和处理 20GB 备份文件的开销很大,并希望我们提供增量备份。

问题在于,如果我们进行完整备份并复制到暂存服务器,这将消除更改跟踪,而差异备份将包含所有内容。

我们尝试了以下流程:

  1. 第 1 天:完整备份
  2. 恢复至暂存状态
  3. 运行消毒
  4. COPY_ONLY 完整备份。
  5. 发送给客户
  6. 第 2 天:COPY_ONLY 完整备份。
  7. 恢复至暂存状态
  8. 运行消毒
  9. 差异备份
  10. 发送给客户

这不起作用,因为在恢复我们发出的差分时,差分基线被认为是不正确的。

现在,如果我们可以进行某种不包含 SP 但保持增量的备份,那么就可以解决问题。

答案1

SQL 服务器世界中所谓的“备份”包括所有内容。它旨在获取整个数据库并将其放入磁盘或磁带中。

如果您只想获取表架构和数据,您需要更接近“生成脚本”功能的东西,我知道该功能在 SQL 2008 中,可能在更早的版本中也有。右键单击数据库,点击“任务”,然后点击“生成脚本”,然后按照向导进行操作。

答案2

如果你只想备份表结构及其内容而不做任何其他事情,则不能使用 SQL备份命令

可以对表格结构进行脚本化,以便获得其结构。至于其内容,您可以使用以下几种工具导出:SQL 导出/导入工具或者业务连续性计划公用事业。

请记住,使用此解决方案,您无法恢复数据库及其选项和安全性,除非您编写数据库脚本。您只能将一些文件(.xls 或 .txt)导入到已创建的现有数据库中。这项任务太繁重,而且不太方便。

如果您需要数据库中的所有表,我建议执行定期备份并在恢复后删除视图或 SP。不过这些不会占用太多空间。

答案3

  1. 备份生产数据库。
  2. 恢复为 staging_extract。
  3. 删除 SP 等(我们有一个用于此的脚本)。
  4. 进行完整备份,并将其发送给客户。
  5. 备份生产数据库。
  6. 恢复为 staging_master
  7. 使用 Redgate SQL Data Compare 进行数据比较并将更改的数据复制到 staging_extract
  8. 对 staging_extract 进行差异备份
  9. 将其发送给客户。

重复步骤 5 至 9 一周/月,然后返回步骤 1。

答案4

SQL Server 6.5 有备份单个表的选项,但在后续版本中该选项被删除。常规 SQL Server 备份将备份整个数据库。

您需要此功能的具体原因是什么?

相关内容