SQL DB中的图片

时间:2009-09-12 20:09:38

标签: sql sql-server tsql image sql-server-2008

我应该在SQL数据库中创建我的表列有多大(二进制(xy))如果我想存储相机拍摄的照片 - 这意味着可变大小到...我不知道.. 7MB?但如果我宁愿将大小限制在2MB左右,我会的。你的意见是什么?

修改

或者我应该在哪里存储它们?我正在使用asp.net mvc构建一个Web画廊。

3 个答案:

答案 0 :(得分:3)

您所说的是varbinary列。当然,如果您使varbinary大于8000,它会立即将其转换为varbinary(max)列,这意味着它可以存储最多2GB。这与SQL Server如何存储行(每页8k)有关。

因此,无论如何,每一行都将列存储为指向位的指针。所以,如果我是我,我会做的是将图像存储在文件系统中,并将这些文件的位置存储在数据库中。

答案 1 :(得分:0)

如果要在SQL Server中存储图像,请使用varbinary(max)列类型。它允许高达2Gb(如果我记得)。

此外,当您使用SQL Server 2008(我不知道快速版本)时,您可以使用新的filestream数据类型。

当然,将其存储在数据库中的最大好处是,您只需要备份一件事,并且您不会遇到文件系统和数据库不同步的问题。新的文件流类型是一个有趣的开发,因为它可以帮助缓解这些问题。

将这些数据存储在数据库中的缺点是会给数据库带来额外的压力,特别是如果数据库和Web服务器之间的带宽已经很紧张的话。

答案 2 :(得分:0)

正如其他人已经在评论中所说的那样(尽管有警察,你们应该得到答案)你们真的必须有一些杀手的理由将图像存储在数据库中。否则只需将它们放在文件系统中即可。

特别是在从Web服务器传送图像的情况下也是如此。 Web服务器在从文件系统提供图像方面比从代码中提取图像更有效。