SQL Server 2022 Filestream 文件组文件已删除

问题描述 投票:0回答:1

在数据库上使用 FileStream 功能时,空文件流文件组物理文件被删除。 现在数据库处于紧急模式。 看起来好像没有最近的备份。 是的,我知道我是个白痴,至少有两个原因。

dbcc checkdb(dbname,repair_allow_data_loss)给出以下错误: 无法打开物理文件“C:\help\db_Help”。操作系统错误2:“2(系统找不到指定的文件。)”。 该文件不在回收站中。

我不需要这个 FileStream 文件组。其中没有数据(当然我不关心)。所有更改数据库命令都会失败,并出现由于文件无法访问而无法打开数据库的错误。

有什么方法可以告诉SQL Server在打开数据库时忽略这个文件组吗? 有没有办法复制 mdf 和 ldf 并恢复到某个时间点(例如昨晚)? 还有其他建议吗?

filestream filegroup
1个回答
0
投票

不可以,SQL Server不允许您在打开数据库时直接忽略文件组,也不能简单地复制MDF和LDF文件来恢复到特定时间点。

您可以通过以下步骤解决这两个问题:

处理丢失的文件流文件组: SQL Server 要求所有文件组都存在,数据库才能正常运行。由于文件流文件组丢失:

将数据库设置为紧急模式:

ALTER DATABASE YourDatabaseName SET EMERGENCY;

使用带有 REPAIR_ALLOW_DATA_LOSS 选项的 DBCC CHECKDB 来删除损坏的文件组:

DBCC CHECKDB ('YourDatabaseName', REPAIR_ALLOW_DATA_LOSS);

这将修复数据库,但可能会导致数据丢失,尤其是与丢失的文件组相关的数据。 恢复到某个时间点: 仅通过复制 MDF 和 LDF 文件无法恢复到特定时间点。相反,您需要备份和日志文件。如果备份可用:

恢复到某个时间点: 仅通过复制 MDF 和 LDF 文件无法恢复到特定时间点。相反,您需要备份和日志文件。如果备份可用:

RESTORE DATABASE YourDatabaseName FROM DISK = 'PathToBackupFile.bak' WITH NORECOVERY;

现在将事务日志应用到特定时间点:

RESTORE LOG YourDatabaseName FROM DISK = 'PathToLogFile.trn' WITH STOPAT = 'YYYY-MM-DD HH:MM:SS', RECOVERY;

如果没有备份: 如果备份不可用且仅存在 MDF 和 LDF 文件:

CREATE DATABASE YourDatabaseName ON 
(FILENAME = 'PathToMDFFile.mdf'),
(FILENAME = 'PathToLDFFile.ldf')
FOR ATTACH;

但我想告诉你,只有在文件未损坏的情况下,这才有效。为了避免将来出现此类问题,请保持定期备份和可靠的恢复策略。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.