Microsoft Azure SQL Server是否可以利用FileTable/Bob存储



背景/问题

我正试图按照以下思路做一些事情,但找不到记录:

  • SQL Azure数据库(不是VM)
  • 将其连接到某个(blob)存储
  • 利用FileTables将文件存储到db/文件系统

澄清:粗略架构

这就是我的想法:

   +--------------------+
   | Queue for Requests |
   | For File Packages  |
   +---------+----------+
             |
             |
  +----------v-----------+
  |Worker Role           |
  |Grabs Files to Package|
  +-----------+----------+
              |
              |
     +--------v-------+            +--------------+
     |SQL Azure       |<----------+|Web Site      |
     |Using FileTable |            |Saves to Azure|
     +----------------+            +--------------+
              +
              |
              |
              v
 +--------------------------+
 |RAID 0 Striping -- 500 GB |
 |------------+-------------|
 |            |             |
 | 250 GB     |      250 GB |
 | Disk 1     |      Disk 2 |
 +------------+-------------+

问题

这种设置可能吗?如果可能,为什么不可能?

我一直在四处寻找,但如果没有实际支付Windows Azure帐户的费用,很难提前找到。

否,SQL Azure不支持文件表,也不支持文件流。您可以将文件存储在Azure Blob存储中(请参阅如何使用Windows Azure Blob存储服务),并将有关文件的元数据(名称、类型、URL位置)存储在SQL Azure DB中。

有关Windows Azure SQL数据库中SQL Server功能限制的列表,请参阅Azure SQL数据库Transact-SQL信息。

有关Windows Azure SQL数据库支持的ALTER DATABASE选项的列表,请参阅ALTER Database(Transact-SQL)。

不幸的是,不支持FileTable和FILESTREAM。看看:

Azure SQL V12 中不支持的功能

@user193655。因为我似乎无法用评论来回答你的问题。是的,Varchar(或者更好的是VarBinary)可以用来存储文件信息。它是SQL server支持的4种方法之一。每种都有适合不同设计需求的优点。

性能方面,截止值约为1Mb。如果你的文件比这个小,那么varbinary比Filestream快。As文件流可以比TDS(表格数据流)更快地传递数据,但设置数据传输操作的开销更大。(这是基于SQL开发团队发布的结果)

当然,您还需要考虑这些数据将存储在哪里。通常情况下,最好是水平分区您的表&将Varbinary列放在不同文件组的单独表中。

注意:SQL团队正在努力减少SQL Azure和;SQL Server。因此,如果你在2015年读到这篇文章,请查看上面提到的文档。答案可能会变成"支持"。

最新更新