背景/问题
我正试图按照以下思路做一些事情,但找不到记录:
- 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)。
Azure SQL V12 中不支持的功能
@user193655。因为我似乎无法用评论来回答你的问题。是的,Varchar(或者更好的是VarBinary)可以用来存储文件信息。它是SQL server支持的4种方法之一。每种都有适合不同设计需求的优点。
性能方面,截止值约为1Mb。如果你的文件比这个小,那么varbinary比Filestream快。As文件流可以比TDS(表格数据流)更快地传递数据,但设置数据传输操作的开销更大。(这是基于SQL开发团队发布的结果)
当然,您还需要考虑这些数据将存储在哪里。通常情况下,最好是水平分区您的表&将Varbinary列放在不同文件组的单独表中。
注意:SQL团队正在努力减少SQL Azure和;SQL Server。因此,如果你在2015年读到这篇文章,请查看上面提到的文档。答案可能会变成"支持"。