在sql server中存储html内容和其他文档(pdf,word,excel)?

时间:2009-10-20 02:28:38

标签: c# asp.net html sql-server tsql

哪种数据类型最适合存储html内容和文档,如pdf,excel文件和word文档。我目前正在使用ntext,但我不确定这是否是存储html内容的最佳数据类型。

另外,我目前使用FCKEditor将html内容保存到ntext字段,并将标记与样式一起存储。如果我碰巧将描述的一部分读入ListView的ItemTemplate,其中包含以下内容:

<%# Eval("content") %>

它显示内容,但也显示标记。例如,而不是显示:

"This is an html string",它会显示<p>This is and html <b>string</b></p>

2 个答案:

答案 0 :(得分:5)

我会将HTML存储在NVARCHAR(MAX)中(如果不需要超过4000个字符,则会更少)。不要使用TEXT / NTEXT数据类型,除非你被困在SQL Server 2000中。它们已被弃用,MAX类型的好处使它们的使用变得愚蠢恕我直言。

我会调查将文件存储为SQL Server 2008中的FILESTREAM。如果您是&lt; 2008年,或者您已经调查了权衡并且FILESTREAM不是一个选项,那么我个人的偏好是将文件存储在文件系统上,以及对数据库中文件的本地和/或http引用。

将文件存储在数据库中的好处是可以获得事务一致性。缺点是你使用了更多的数据库空间,这通常是在更昂贵的存储上。调试时也要困难得多(您不能在Management Studio中说“SELECT PDFFile FROM Table”,并希望弹出Acrobat Reader并显示列的内容)。

因为在工作中我必须乞求并签署我未出生的孩子的权利以获得更多的SAN分配,并且在游戏中,我的数据库空间使用量比我的文件空间使用量更多 lot ,我每次都选择基于文件的存储。在工作中,我们的文件系统已经备份,虽然它与数据库备份不是100%同步,但我们看到的文件损坏问题很少,而不是最终用户的错误(如果没有我们的参与,很容易纠正) - 事实上,零 - 调查似乎不值得。

像我说的那样,个人喜好。但要问正确的问题并了解你的目标和限制。

答案 1 :(得分:0)

  • 将Unicode HTML存储为ntext
  • 如果您确定110%只需要ascii,则可以使用text或varchar。
  • 将二进制文件(pdf,word,excel)存储为二进制blob