1

SQL Server で永続的に作成されたハッシュ値を持つ 2 つのテーブルにインデックスを付けて参照しようとしています。私の計算は次のとおりです。

(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
4

1 に答える 1

0

Accessは VARBINARY(MAX) を OLE オブジェクトに変換しますが、残念ながらAccessでインデックスを作成することはできません。少し面倒ですが、Access でリレーションシップを定義せずにテーブルを使用する必要があるようです。JetSQL と ODBC にはかなりの制限があり、これはそのうちの 1 つと思われます。

于 2013-08-08T16:19:10.807 に答える