错误号1919在映像列的索引创建期间

时间:2014-01-17 12:15:49

标签: sql-server-2008

我已经对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

1 个答案:

答案 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
 )