【发布时间】:2013-08-09 18:38:50
【问题描述】:
使用 Sql Server 的 FILESTREAM 功能在数据库中存储文档时,处理文件大小的正确方法是什么?
我知道您可以在文件流列上使用 TSQL 命令DATALENGTH(),但对于this Microsoft article,这可能并不总是最好的主意:
避免在应用程序中检索大量 BLOB 文件的数据长度。这是一个耗时的操作,因为大小未存储在 SQL Server 数据库引擎中。如果您必须确定 BLOB 文件的长度,请使用 Transact-SQL DATALENGTH() 函数来确定 BLOB 的大小(如果它已关闭)。 DATALENGTH() 不会打开 BLOB 文件以确定其大小。
我有点不清楚上面是否说您应该尽可能避免使用 DATALENGTH() 或者它是否是检索文件大小的推荐方法。
如果我必须经常访问文档大小以将其作为元数据显示给用户,那么推荐的检索方式是什么?将它们存储在单独的字段中?还是 datalength() 够快?
【问题讨论】:
-
您需要确定 DATALENGTH() 对于您的应用程序是否足够快。你也是什么意思。
-
不知道,抱歉。我对引用的文字仍然有些困惑。 :) 它只谈论 datalength() 还是谈论两种不同类型的大小检索?
-
另外,使用单独的列自己存储大小有什么影响?为什么这是一个好/坏主意?
标签: .net sql-server tsql datalength sqlfilestream