0

我们经历了一次 sql 注入攻击,它破坏了我们的主数据库。

主数据库有两个分区表到文件组中。

损坏的数据库进入了可疑模式,我们无法使用。

我能够恢复部分数据库的备份(没有文件组,因为我们没有备份这些文件。我知道坏事)。

我现在能够以可疑模式删除数据库,因此我们只剩下恢复的数据库和链接到损坏数据库的文件组。

现在我正试图弄清楚如何使这些文件组重新联机。

我已经尝试删除它们,以便我可以重新添加它们,但我无法删除它们,因为我得到了

Msg 5056, Level 16, State 2, Line 1
Cannot add, remove, or modify a file in filegroup 'FG_Audit' because the filegroup is not online.

有什么解决办法吗?我发现他们谈论从备份恢复的帖子,但我们没有其中一个文件组。

我们丢失了这些数据吗?我们如何删除文件组?备份现在因此停止工作。

更新

如果我运行这个

SELECT 
 f.name file_group, 
 d.name file_name, 
 d.state_desc file_state
FROM sys.filegroups f
JOIN sys.database_files d
 ON f.data_space_id = d.data_space_id;
GO

数据库抱怨离线的所有文件组都说“RECOVERY_PENDING”

4

3 回答 3

0

您可以在其中创建任何 FILEGROUP 和 FILES(参见代码)。您是否有任何关于哪些表或分区分配给之前存在的 FILEGROUPS 的信息?使用大师,然后...

ALTER DATABASE [<YourDatabase>] ADD FILEGROUP [FG_Audit_New];
GO

ALTER DATABASE [<YourDatabase>] ADD FILE (NAME = N'AuditData_1', 
FILENAME = N'<YourPath>\AuditData_1.ndf', 
SIZE = 256000KB , FILEGROWTH = 61440KB)
TO FILEGROUP [FG_Audit_New]; -- change metrics at will.
GO

ALTER DATABASE [<YourDatabase>] ADD FILE (NAME = N'AuditData_2', 
FILENAME = N'<YourPath>\AuditData_2.ndf', 
SIZE = 256000KB , FILEGROWTH = 61440KB )
TO FILEGROUP [FG_Audit_New]  -- change metrics at will.
GO

有什么结果吗?

SELECT * FROM <YourDatabase>.sys.data_spaces;

于 2015-10-20T22:27:21.997 回答
0

好的,很好的解释。让我问你,你能导航到你存储有问题的 FILEGROUP 文件的 Windows 磁盘位置吗?将有一个路径指向存储它的 Windows 操作系统驱动器或 LUN。每个 FILEGROUP 都是逻辑的(只是存储的属性,而不是物理单元),但位于每个 FILEGROUP 中的文件将在磁盘上具有物理位置。查找文件;应该有一个或多个文件。如果您找不到这些文件,请告诉我,当您这样做时,我会找出另一个角度。

此外,将“physical_name”列添加到您的查询中,这将向您显示文件的位置。文件中有数据,所以如果你能找到这些文件,我们应该能够恢复文件组。

顺便问一下,Federico,您能列出有关您的备份设备和备份集的任何信息吗?数据库是 SIMPLE 模型、BULK_LOGGED 还是 FULL?您是否有任何 FULL 备份文件,并且您是否经常进行 LOG 备份(FULL 恢复模式)?你有差异备份吗?当你在冰箱里闻到难闻的味道时,你是否备份了 LOG 的 TAIL?

于 2015-10-22T13:24:28.443 回答
0

Federico,你能从混乱之前找到一个完整的备份,以及在你做部分之前的差异链和/或日志备份吗?如果是这样,您可以重新开始还原,链接所有日志备份和尾部吗?

于 2015-10-23T00:36:00.627 回答