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

时间:2013-10-03 04:48:39

标签: sql-server sql-server-2008 backup

如上所述,我面临问题。是否可以仅从文件流数据库中获取数据备份并恢复该备份?

场景:我们将产品图像存储到数据库和数据库大小现在超过70 GB。因此,每天备份很难同样耗费时间。我们给了BCP备份工具,但我们不会继续使用它,因为有时我们注意到在恢复BCP备份时,表中缺少了一些行。客户或我们也不打扰图像数据,如果发生了某些事情,那么如果我们只是使用新的文件流启用恢复数据备份,我们将再次上传图像文件。

R& D我已经完成了:

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我无法恢复数据库)

RESTORE DATABASE [RestoreDBName] 
  FILE = N'DBName'
  FROM  DISK = N'E:\SendReceiveData\Test.bak' 
  WITH  FILE = 1,  
  MOVE N'DBName' TO N'D:\MyDatabases\RestoreDBName.mdf',  
  MOVE N'DBName_log' TO N'D:\MyDatabases\RestoreDBName_0.ldf',  
  NOUNLOAD,  REPLACE,  STATS = 10

但是当我检查文件组时,FileStream组已经创建,即使我没有提到Restore Query。此外,如果我想删除文件流表,它不允许删除并给我错误。如果我直接尝试删除FilestreamGroup然后也给我错误。我想如果能够删除文件流表&文件组,然后我可以创建新的文件组,并将使用新的文件流,但我无法做到。

2)方法2:

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

3)方法3:

我认为Filestream表whilch属于主文件组,这就是它包含文件流组的原因。所以我创建了一个临时数据库,其中我使用Primary FileGroup创建了一个表,我使用ImageData FileGroup创建了Image表。然后仅备份主文件组,并假设如果我还原数据库将不会出现Image表。但仍然Image表显示我在还原数据库中。如果我看到文件组,那么所有4个文件组(Primary,ImageData,Log& Filestream)都可用。

那么请你指导我错在哪里或者不可能?我正在使用SQL Server 2008。

2 个答案:

答案 0 :(得分:0)

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

  Backup Database NameDatabase to Disk='database.bak'

还原数据库简单查询:

ALTER DATABASE NameDatabase SET OFFLINE WITH ROLLBACK IMMEDIATE; RESTORE DATABASE NameDatabase From Disk ='Pathefile' WITH REPLACE

在查询这样的标志以进行掌握之前,需要一段时间才能获得许可:

use master  Backup Database NameDatabase to Disk='database.bak'
  • 注意:您可以直接使用“带有替换”,以避免出现一些错误

答案 1 :(得分:0)

显然这是不可能的,如果您在备份过程中跳过了与文件流相关的逻辑文件,则还原操作将使数据库处于恢复挂起模式。

原因是因为默认情况下,文件流文件由数据分区中的表支持。因此,如果我们将表还原为备份的一部分,而不是实际文件的一部分,那么您最终将得到一个引用文件但没有文件的表。我尝试了许多不同的方法,但是我只目睹了数据和元数据的完整性会丢失。唯一的方法是拥有两个单独的数据库,一个用于数据,另一个用于文件流。