【发布时间】:2016-08-09 21:48:43
【问题描述】:
我创建了一个带有临时表 Product 的 SQL Server 2016 数据库。我想通过链接表从 Access 数据库中更新表。尝试执行此操作时,Access 会报告
保留错误(-7776):没有针对此错误的错误消息
表定义为:
CREATE TABLE [dbo].[Product]
(
[Product] [uniqueidentifier] NOT NULL,
CONSTRAINT PK_Product_Product PRIMARY KEY CLUSTERED (Product),
[Name] [nchar](50) NOT NULL,
CONSTRAINT [AK_Product_Name] UNIQUE([Product line], [Name]),
[Status] [uniqueidentifier] NOT NULL,
SysStartTime datetime2 GENERATED ALWAYS AS ROW START NOT NULL,
SysEndTime datetime2 GENERATED ALWAYS AS ROW END NOT NULL,
PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime)
) ON [PRIMARY] WITH
(
SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.ProductHistory)
)
GO
查询
UPDATE Product
SET Status = (SELECT [Product status]
FROM [Product status]
WHERE [Name] = 'Announced')
WHERE [Name] = 'A300';
成功且没有错误,并显示在 Access 表中。更新会正确反映在历史记录表中。
我已尝试隐藏有效时间列,以防它们的后端更改导致问题,但没有效果。 Product 和 Product status 表都包含最少的数据。
是否有一些特定的方法可以让它工作,还是不支持这种情况?
【问题讨论】:
-
您到时态表的 ODBC 链接是否使用 SQL Server 的最新 ODBC 驱动程序?
-
您可以尝试在此表上创建一个没有问题列的视图,在 Access 中链接该视图并尝试更新其中的记录。
-
@Gord 使用新安装的 SQL Server 2016 安装的
SQL Server Native Client RDA 11.0.。 -
闻起来像数据问题,更具体地说是您的日期列中的无效数据。也许您可以运行查询来搜索任何无效的日期值。
-
@Rene datetime2 和 DateTime 之间的元数据映射无效 - 特别是在 Access 中无法实现默认精度,并且将列合并到键中时不会显示警告。
标签: ms-access sql-server-2016 temporal-database