我已经对sqlserver数据库中存储图像的最佳研究做了大量研究。堆栈上的许多相关链接溢出,推荐使用FileStream,有些建议存储具有一定size.eg的图像(图像大小小于2MB)。例如:this posted
我决定将我的图像存储在数据库上,因为我的应用程序验证所有图像大小都要小于1MB才能插入。为了更好的性能我想索引这些图像列,但我有这个错误:我一直得到SQL错误:1919年
在Microsoft站点上,这意味着无法在text,ntext或image数据类型的列上创建索引。
但我的数据类型是varbinary(Max)
这是我的表脚本:
USE [MobileDBU]
GO
/****** Object: Table [dbo].[storeimage] Script Date: 01/17/2014 12:13:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[storeimage](
[Photo] [varbinary](max) NOT NULL,
[SSN] [varchar](50) NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
答案 0 :(得分:1)
如果我理解您的要求,我建议您在存储表中添加一个额外的字段。该字段应该像图像的唯一标识符。为此,您可以使用自动标识,GUID,图像HashCode,图像文件名,...您可以命名它。 那么你应该在依赖表中使用“ID”约束。
类似的东西:
Table ImageStore(Id INT Primary KEY, ImageBlob [varbinary](max), ...)
Table ImageNotes (
ImageId INT,
NoteId INT,
Node Text, ...
PRIMARY KEY ([ImageId], [NodeId]),
CONSTRAINT FK_ImageNotes_ImageStore FOREIGN KEY ([ImageId]) REFERENCES [ImageStore]([Id]) ON DELETE CASCADE
)