1

我正在尝试使用在 SQL Server 上通过持久性创建的哈希值来索引和引用两个表。我的计算是:

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

这些列都是 Varchar 类型。

我在计算列上创建了一个索引,然后尝试通过 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
4

1 回答 1

0

Access将 VARBINARY(MAX) 转换为 OLE 对象,遗憾的是无法在 Access 中编制索引。虽然有点痛苦,但看起来您必须只使用没有在 Access 中定义的关系的表。JetSQL 和 ODBC 有一些限制,这似乎是其中之一。

于 2013-08-08T16:19:10.807 回答