Sql server 如何在没有文件的情况下备份支持filestream的大型数据库

Sql server 如何在没有文件的情况下备份支持filestream的大型数据库,sql-server,tsql,Sql Server,Tsql,我们在生产中有一个支持大于40Gb文件流的大型数据库。我想自动备份此数据库并将其恢复到暂存状态,以便测试部署。我们环境的性质是,filestream数据占数据的90%以上,我在登台时不需要它 有没有一种方法可以在不使用filestream数据的情况下备份db,因为这将大大减少我的暂存磁盘和网络需求,同时仍然使我能够测试(某种程度上)具有代表性的prod示例?我假设您有一个相当新版本的SQL Server。由于这是生产,我假设您处于完全恢复模式 不能只从备份中排除单个表。备份和恢复不是这样工作的。

我们在生产中有一个支持大于40Gb文件流的大型数据库。我想自动备份此数据库并将其恢复到暂存状态,以便测试部署。我们环境的性质是,filestream数据占数据的90%以上,我在登台时不需要它


有没有一种方法可以在不使用filestream数据的情况下备份db,因为这将大大减少我的暂存磁盘和网络需求,同时仍然使我能够测试(某种程度上)具有代表性的prod示例?

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


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

您可以使用
生成脚本和界面,执行以下操作之一:

  • 复制所有SQL对象和数据(不带
    filestream
    表)并重新创建数据库
  • 复制所有没有数据的SQL对象;在当前SQL实例上新建数据库中的对象;直接从第一个数据库复制所需的数据
第一种是懒惰的,可能无法很好地处理大型数据库。第二种方法肯定有效,但您需要自己同步数据

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

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

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



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

是的,我有点希望有人知道这是可行的,可能值得研究我知道我没有把它添加到问题中,但我想自动化这个过程,这排除了这种做事的方法,但这对于第一次复制来说很方便