将SQL Server 2005数据库的文件附件限制为值> 8000字节
我有一个允许用户将文件附加到SQL Server 2005数据库的.Net应用程序。我想限制文件大小为10MB,所以从我可以告诉的是,我必须声明数据类型varbinary(max),因为我实际可以指定的最大大小是8000字节。但〜2GB文件大小varbinary(max)允许看起来像矫枉过正。有没有办法让我把它限制在10MB的数据库中,还是只需要检查他们是不是试图在前端添加更大的东西。将SQL Server 2005数据库的文件附件限制为值> 8000字节
我认为你需要在前端制作它。你可以像在web.config限制HTTP请求大小:
</configuration>
</system.web>
<httpRuntime maxRequestLength="60000"/>
</system.web>
</configuration>
您可能还需要明确检查公布的文件大小,当用户尝试上传文件超过指定的阈值。
在ASP.NET中,您已经对上传大小(默认值:4MB IIRC)有限制。你可以使用它来限制你的下载。
海事组织它会更好,因为它的数据库路径越早,所以你最大限度地减少服务器上的过载。
唯一的缺点是,如果用户尝试上传大于ASP.NET限制的文件,用户将看到一个错误页面。
啊 - 我的错。这是一个VB.Net桌面应用程序。我忘了提到这一点。但我可以想象,必须在前端处理它的建议仍然成立。
感谢
我会检查你的应用程序文件的限制,你不想去通过将其插入到数据库的过程中,只是为了找出它是太大了。
一个小小的应用程序逻辑可以节省时间,并提供更好的用户体验。
使用varbinary(max)完全没问题,因为它是varbinary,所以只能使用内容需要的地方,最多2个演出。但是,您可以在数据库中添加CHECK CONSTRAINT,检查上传的数据长度()。我宁愿只检查应用程序中的上传。
稍微偏离主题: 虽然这当然是可能的,但我发现将附件直接存储在数据库中通常是一个坏主意。
主要问题是由于大附件导致整个数据库大小的爆炸性增长,这使得备份和其他日常维护变得更加困难。
简单地将文件的路径信息存储在数据库中,并将实际文件存储在共享网络文件夹中是我推荐考虑的一种选择。 (当然,这意味着你现在不得不担心网络文件许可和其他一些问题,但在许多情况下仍然是更好的选择)。
看起来这将是限制附件的最佳做法大小在前端和数据库中。 Kaboing的检查约束解决方案似乎适合事物的数据库方面。
你能想到一个不做应用程序和数据库端检查的理由吗? – Solracnapod 2008-10-29 03:03:39