11

背景/问题

我正在尝试按照以下方式做一些事情,但找不到它的记录:

  • SQL Azure 数据库(不是 VM)
  • 将它连接到一些(blob)存储
  • 利用 FileTables 将文件存储到 db/filesystem

澄清:粗略的架构

这就是我的想法:

   +--------------------+
   | 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 帐户的费用,很难提前找到。

4

3 回答 3

10

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

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

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

于 2013-08-03T06:55:12.303 回答
1

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

Azure SQL V12 中不支持的功能

于 2015-05-21T17:25:14.367 回答
0

@用户193655。因为我似乎无法用评论回答你的问题。是的 Varchar(或更好的 VarBinary)可用于存储文件信息。它是 SQL Server 支持的 4 种方法之一。每个都有针对不同设计需求的优点。

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

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

注意:SQL 团队正在努力减少 SQL Azure 和 SQL Server 之间的功能奇偶性差距。因此,如果您在 2015 年以上阅读此内容,请查看上面引用的文档。答案可能会变成“支持”。

于 2014-02-09T03:07:23.220 回答