3

在工作中,我们将为我们的客户存储媒体,例如视频、高清照片和音频,我建议使用 SQL FILESTREAM 来存储这些媒体。

这种方法的主要问题之一是如果 FILEGROUP 损坏会发生什么?

  • 这会影响数据库或其功能吗?
  • 是否会有任何警告数据可能已损坏?
  • 使用损坏的 FILEGROUPS 备份数据库会引发任何警告吗?还是只是正常备份?
  • 如果可以使用损坏的数据进行备份,那么还原呢?

还有其他我们应该考虑的问题吗?

4

2 回答 2

1

请阅读 CIL。

这种方法的主要问题之一是如果 FILEGROUP 损坏会发生什么?

A: 如果 Filestream Filegroup 损坏,那么您的数据库将处于“recovery pending”
状态,就像其他文件组损坏一样。但几乎只有一种
FileStream FileGroup的损坏,就是hdr损坏,是一种
字典文件,保存文件头信息。

•这会影响数据库或其功能吗?

答:是的,这将使您的数据库无法正常工作。

• 是否会有任何警告数据可能已损坏?

答:不,如果您的 BLOB 文件中只是数据损坏,则不会发出警告。
实际上那些只是二进制文件,我想不出它可能被破坏的场景。

• 使用损坏的 FILEGROUPS 备份数据库是否会引发任何警告?还是只是正常备份?

A:如果 Filestream FileGroup 损坏,您的数据库无法正常工作,
您必须恢复数据库。

•如果可以对损坏的数据进行备份,那么恢复呢?

A:损坏的数据不能备份,可能有脏数据,
但脏数据仍然是合法数据。当我说脏数据的时候,比如
SQL Server中对你的文件流有
权限的人,也会对你的BLOB文件有权限,他们可以直接更新BLOB文件的内容,
这可能会涉及到一些脏数据。
至于其他问题,您需要
定期对数据库进行完整备份/差异备份/Tranlog 备份,以防万一发生灾难。文件组备份
对您没有帮助。
于 2013-03-17T07:34:03.270 回答
0

如果你关心数据——就像你显然关心的那样,基于这个问题——那么为什么要到处乱跑呢?在您的数据库中声明一个BLOB列,让 DBMS 处理您提出的问题。

有人,也许是您团队中的某个人,可能会反对太慢。首先,我挑战这个假设。其次,如果它经过测试并且速度太慢,无论如何都要这样做(!)并将 FILESTREAM 版本保留为外部缓存。这样转储/恢复可以忽略它,并且可以用一个SELECT语句纠正损坏/删除。

于 2013-03-14T01:03:59.550 回答