我在SQL Server 2012实例中有一个表,就像这样
CREATE TABLE [dbo].[Test](
[SampleDateTime] [datetime] NULL,
[Unit ID] [nvarchar](4) NULL,
[WS Avg 2min] [float] NULL,
[WD Avg 2min] [float] NULL,
[WGS 10min] [float] NULL,
[WGD 10min] [float] NULL,
[Air Temp] [float] NULL,
[Rel Humidity] [float] NULL,
[Dew Point] [float] NULL,
[Pyranometer] [float] NULL,
[Quantum] [float] NULL,
[Air Pressure] [float] NULL,
[Snow Level] [float] NULL,
[Rainfall] [float] NULL,
[PW Current] [varchar](10) NULL,
[Visibility] [float] NULL,
[CBase 1] [float] NULL,
[CBase 2] [float] NULL,
[CBase 3] [float] NULL,
[Vert Vis] [float] NULL
) ON [PRIMARY]
通过ODBC链接表(SQL Server Native Client 11.0)连接到MS Access(2010)
当我打开表格时,我会看到所有数据
然而,当我尝试一个简单的查询
SELECT dbo_Test.* FROM dbo_Test
WHERE ( (dbo_Test.[Unit ID])="BASE") ;
我仍然获得所有行,而不仅仅是[Unit ID]为“BASE”的行 SQL Server管理中的相同查询。 Studio工作正常,只返回预期的结果。
我还注意到,当按[Unit ID]对链接表进行排序时,它没有正确排序。将有数据行没有像我期望的那样排序。 (见下图,按[单位ID]排序升序)
有没有办法让这个链接表行为正常?
答案 0 :(得分:1)
事实证明问题是该表没有建立主键。由于我们的数据,我无法使用SampleDateTime作为主键。所以,我在SampleDateTime + Unit ID上创建了一个唯一的密钥
ALTER TABLE [dbo].[Test] ADD CONSTRAINT [KEY_AWAData_DateandUnitID] UNIQUE NONCLUSTERED
(
[SampleDateTime] ASC,
[Unit ID] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
现在MS Access很乐意按预期执行查询和排序。
答案 1 :(得分:1)
您的桌子似乎缺少主键。这可能会导致各种问题(例如,您将无法写入该链接表)。如果您看到的效果是由此造成的,我会感到惊讶 但是尝试添加IDENTITY列作为主键,并从Access重新链接表。
//编辑:太晚了:)