gpt4 book ai didi

sql-server - 如何在没有文件流的情况下备份和恢复数据库

转载 作者:行者123 更新时间:2023-12-02 11:22:26 24 4
gpt4 key购买 nike

我面临上面提到的问题。是否可以仅从 Filestream 数据库进行数据备份并恢复该备份?

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

我做过的研发:

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 组已经创建时,即使我没有提到恢复查询。此外,如果我想删除文件流表,则不允许删除并给我错误。如果我直接尝试删除 FilestreamGroup,那么也会给我错误。我想如果能够删除文件流表和文件组,那么我可以新创建它们并且可以使用新的文件流,但不能这样做。

2)方法2:

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

3)方法3:

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

那么你能指导我哪里出错或不可能吗?我正在使用 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
在查询标志以掌握这样的情况之前,需要一些时间来获得许可:
use master  Backup Database NameDatabase to Disk='database.bak'
  • 注意:你可以直接使用:“With replace”来避免一些错误
  • 关于sql-server - 如何在没有文件流的情况下备份和恢复数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19150997/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com