Sql server 如何备份&;无文件流还原数据库

Sql server 如何备份&;无文件流还原数据库,sql-server,sql-server-2008,backup,Sql Server,Sql Server 2008,Backup,我面临上述问题。是否可以只从Filestream数据库进行数据备份并恢复该备份 场景:我们正在将产品图像存储到数据库,数据库大小现在超过70 GB。因此,很难对相同的数据进行每日备份,而且也很耗时。我们提供了BCP备份功能,但我们不打算使用相同的功能,因为有时我们在恢复BCP备份时注意到表中缺少一些行。另外,客户端或我们不关心图像数据,如果发生了什么事情,那么如果我们只是使用新的filestream enable恢复数据备份,我们将再次上载图像文件 我所做的研发工作: 1) 方法1: 我用下面的

我面临上述问题。是否可以只从Filestream数据库进行数据备份并恢复该备份

场景:我们正在将产品图像存储到数据库,数据库大小现在超过70 GB。因此,很难对相同的数据进行每日备份,而且也很耗时。我们提供了BCP备份功能,但我们不打算使用相同的功能,因为有时我们在恢复BCP备份时注意到表中缺少一些行。另外,客户端或我们不关心图像数据,如果发生了什么事情,那么如果我们只是使用新的filestream enable恢复数据备份,我们将再次上载图像文件

我所做的研发工作:

1) 方法1:

我用下面的查询进行了备份,我认为它只会给我提供数据

BACKUP DATABASE [DBName] 
        FILEGROUP = N'PRIMARY' TO  DISK = N'E:\SendReceiveData\Test.bak' 
        WITH NOFORMAT, NOINIT,  
        NAME = N'DBName-Full Filegroup Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
现在,我想通过以下查询在其他位置恢复相同的备份。(使用Management Studio,我无法还原数据库)

但当我检查文件组时,即使我在恢复查询时并没有提到,FileStream组也已经创建。另外,若我想删除filestream表,它不允许删除,并给我错误。如果我直接尝试删除FilestreamGroup,那么也会给我错误。我想,如果我能够删除filestream表和文件组,那么我可以新建这些表和文件组,并将使用新的filestream,但我无法这样做

2) 方法2:

我备份数据库,如上所示。但在还原时,我首先使用Filestream创建空白数据库,并尝试还原数据库,但这也给了我错误

3) 方法3:

我认为Filestream表属于主文件组,这就是它包含Filestream组的原因。所以我创建了一个临时数据库,其中一个表是我用主文件组创建的,另一个表是我用ImageData文件组创建的。然后只备份主文件组,并假设如果恢复数据库,映像表将不会出现。但静止图像表显示我在恢复数据库中。如果我看到文件组,那么所有4个文件组(主、ImageData、日志和文件流)都可用


所以你能告诉我哪里错了,哪里不可能吗?我使用的是SQL Server 2008。

我用于备份数据库简单查询:

  Backup Database NameDatabase to Disk='database.bak'
ALTER DATABASE NameDatabase SET OFFLINE WITH ROLLBACK IMMEDIATE; RESTORE DATABASE NameDatabase From Disk ='Pathefile' WITH REPLACE
和恢复数据库简单查询:

  Backup Database NameDatabase to Disk='database.bak'
ALTER DATABASE NameDatabase SET OFFLINE WITH ROLLBACK IMMEDIATE; RESTORE DATABASE NameDatabase From Disk ='Pathefile' WITH REPLACE
在向master查询签名之前,需要一段时间的权限,如下所示:

use master  Backup Database NameDatabase to Disk='database.bak'
  • 注意:您可以使用直接:“With replace”来避免某些错误

显然这是不可能的,如果在备份期间跳过与filestream相关的逻辑文件,则恢复操作将使数据库处于恢复挂起模式


原因是,默认情况下,Filestream文件由数据分区中的表支持。因此,如果我们将该表作为备份的一部分而不是实际的文件进行恢复,那么您将得到一个引用了这些文件但没有这些文件的表。我尝试了许多不同的方法,但我只看到数据和元数据的完整性将丢失。唯一的方法是有两个独立的数据库,一个用于数据,另一个用于文件流。

由于这个问题太老,无法迁移,我会将它发布在dba.stackexchange.com上,类似“给我一个错误”的语句太模糊,任何人都无法真正提供帮助。什么错误?