admin

SQL Server FILESTREAM限制

sql

我正在查看SQL
Server中的FILESTREAM属性,以在其中存储文件。我了解它将文件存储在硬盘驱动器上,并将文件指针/路径信息存储在DB中。同样,在此过程中保持事务的一致性。

对于FILESTREAM属性,似乎还存在一个限制:“ FILESTREAM数据只能存储在本地磁盘卷上”。

如果我预计自己的Web应用程序将存储200,000张每个1-2mb的图像,那么我将需要大约200gb的硬盘驱动器空间来存储这些图像。由于FILESTREAM要求根据限制将所有数据仅存储在本地磁盘上,因此由于存储需求非常大,因此不可能在单个硬盘驱动器上存储数百万个文件。

我对限制的理解是正确的,还是我在这里遗漏了任何东西?

如果此限制是正确的,我会以普通blob的形式将其存储在db中,并将我的数据库集群化以增加存储需求,这对于FILESTREAM似乎是不可能的。

请分享您的想法!

更新:
关于文件流的其他几个问题:

  1. 在数据容器损坏的情况下如何处理数据恢复?
  2. 我们可以只备份没有文件系统数据的数据库吗?[假设数据在SAN中,无需移动]
  3. 我想备份或还原数据库,而只是重新映射[映射到SAN]的文件组路径信息。这可能吗?

阅读 139

收藏
2021-05-10

共1个答案

admin

FILESTREAM实际上不需要本地存储,而实际上不需要SMB网络存储。iSCSI或光纤通道SAN可以很好地存储FILESTREAM数据。每个表还可以具有多个文件流文件组,从而对数据进行分区。如果您严格针对sql
server 2008,则几乎没有理由不对大型二进制数据使用文件流。此处有一个Microsoft白皮书描述文件流分区。

2021-05-10