我们经历过一次sql注入攻击,它破坏了我们的主数据库。
主db有两个分区表到文件组中。
腐败的数据库进入了疑似模式,我们无法使用它。
我能够使用部分恢复数据库的备份(没有文件组,因为我们没有备份那些......我知道坏事。)
我现在能够以可疑模式删除数据库,因此我们留下了已恢复的数据库以及链接到损坏数据库的文件组。
现在我试图弄清楚如何将这些文件组重新联机。
我已尝试删除它们,以便我可以重新添加它们,但我无法删除它们
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"
答案 0 :(得分: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;
答案 1 :(得分:0)
好的,好的解释。让我问你,你能导航到存储有问题的FILEGROUP文件的Windows磁盘位置吗?将存在存储该操作系统的Windows OS驱动器或LUN的路径。每个FILEGROUP都是逻辑的(只是存储的属性,而不是物理单元),但位于每个FILEGROUP中的文件将在磁盘上具有物理位置。找到文件;应该有一个或多个文件。如果您找不到这些文件,请告诉我,当您这样做时,我会想出另一个角度。
另外,添加列&#34; physical_name&#34;查询,这将显示文件的位置。文件中包含数据,因此如果您能找到这些文件,我们应该能够恢复FILEGROUPS。
顺便说一下,Federico,您能列出有关备份设备和备份集的任何信息吗?数据库是SIMPLE模型,BULK_LOGGED还是FULL?你有任何FULL备份文件,你经常做LOG备份(完全恢复模型)?你有差异备份吗?当你在冰箱里闻到一些不好的东西时,你备份了LOG的尾部吗?
答案 2 :(得分:0)
费德里科,你可以在混乱之前找到一个完整的后卫,以及来自你之前的差异和/或日志备份链吗?如果是这样,您可以重新开始还原,链接所有日志备份和尾部吗?