我正在尝试使用在SQL Server上使用持久性创建的哈希值来索引和引用两个表。我的计算是:
(hashbytes('sha1',((([AddressLine1]+[AddressLine2])+[City])+[State])+[Zip]))
列都是Varchar Type。
我在计算列上创建索引,然后尝试通过ODBC链接到SQLServer,但是我收到此错误:
Invalid field Definition 'FIELDNAME' in definition of index or relationship
这可能是什么原因以及如何解决?
修改
我不允许分享有关表定义的信息,但我唯一需要的密钥是主键,它是代理键。计算字段强制使用varbinary(max)类型并允许空值。
测试指数如下
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
答案 0 :(得分:0)
在Access中访问不幸translates VARBINARY(MAX) into an OLE Object的cannot be indexed。虽然这有点痛苦,但看起来你必须只使用没有在Access中定义的关系的表。 JetSQL和ODBC有一些限制,这似乎是其中之一。