如何在没有文件

时间:2018-04-11 02:14:47

标签: sql-server tsql

我们在Production中有一个大型的> 40Gb文件流启用数据库。我想自动备份这个数据库并将其恢复到暂存状态,以便测试部署。我们的环境的性质使得文件流数据> 90%的数据,我在分期时不需要它。

有没有办法可以在没有文件流数据的情况下备份数据库,因为这会大大减少我的暂存磁盘和网络要求,同时仍然可以让我测试(某种程度上)代表性的prod样本?

2 个答案:

答案 0 :(得分:1)

我假设你有一个相当新版本的SQL Server。由于这是生产,我假设你处于完全恢复模式。

您不能只从备份中排除单个表。备份和还原不起作用。我能想到的唯一可能性就是只备份不包含文件流的文件组。我不是100%肯定你是否能够恢复它,因为我从来没有尝试过。花些时间研究部分备份并恢复文件组并尝试一下。

答案 1 :(得分:1)

您可以使用Generate Scripts和界面并执行以下操作之一:

  • 复制所有SQL对象和数据(不包含filestream表)并重新创建数据库
  • 复制没有数据的所有SQL对象;在当前SQL实例上的新数据库中创建对象;直接从第一个数据库复制您需要的数据;

第一个是懒惰的,可能不适用于大数据库。第二个肯定会起作用,但您需要自己同步数据。

在这两种情况下,请打开此界面:

enter image description here

然后选择所有对象和所有没有大对象的表:

enter image description here

通过此选项,您可以控制数据提取(跳过或包含):

enter image description here

我想最好在没有数据的情况下编写所有对象的脚本。然后创建一个model数据库。您甚至可以在model数据库中添加一些示例数据。当您更改生产数据库(创建新对象,删除对象等)时,也应在model数据库上应用这些更改。拥有这样的model数据库意味着您拥有具有所有支持功能的生产数据库的副本,并且您可以在所需的每个测试SQL实例上恢复此model数据库。