使用文本标准从MS SQL链接表查询访问查询

时间:2015-08-20 14:39:11

标签: sql sql-server ms-access

我在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]排序升序) enter image description here

有没有办法让这个链接表行为正常?

2 个答案:

答案 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重新链接表。

//编辑:太晚了:)