为计算的持久化VArBinary(Max)列编制索引并在Access 2003中使用ODBC



我正试图用SQL Server上使用持久性创建的哈希值对两个表进行索引和引用。我的计算是:

(hashbytes('sha1',((([AddressLine1]+[AddressLine2])+[City])+[State])+[Zip]))

这些列都是Varchar类型。

我在计算列上创建了一个索引,然后尝试通过ODBC链接到SQLServer,但我收到了以下错误:

Invalid field Definition 'FIELDNAME' in definition of index or relationship

造成这种情况的原因是什么?我该如何解决?

编辑

我不被允许分享我关于表定义的信息,但我唯一需要和拥有的键是主键,它是一个代理键。计算字段强制使用varbinary(max)类型并允许null。

测试指标如下

USE [KMC_MailingData]
GO
SET ARITHABORT ON
GO
SET CONCAT_NULL_YIELDS_NULL ON
GO
set QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
SET ANSI_PADDING ON
GO
SET ANSI_WARNINGS ON
GO
SET NUMERIC_ROUNDABORT OFF
GO
/****** Object:  Index [test]    Script Date: 08/08/2013 11:09:48 ******/
CREATE NONCLUSTERED INDEX [test] ON [dbo].[AddressStaging] 
(
    [calculatedHash] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, 
SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF,
ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

Access翻译VARBINARY ;最大);不幸的是,无法在Access中对其进行索引。虽然这有点痛苦,但看起来您将不得不只使用没有在Access中定义关系的表。JetSQL和ODBC有一些限制,这似乎就是其中之一。

最新更新