Windows 11 - Microsoft Access - ODBC SQL Server Driver 17 - SQL Server 2016 - 仅在一个用户机器上触发错误

问题描述 投票:0回答:1

错误:3155,ODBC--在链接表 [表名] 上插入失败。 Microsoft ODBC SQL Server 驱动程序 - SQL Server - 如果语句包含没有 INTO 子句的 OUTPUT 子句,则 DML 语句的目标表 [表名] 不能有任何启用的触发器(#334)。

对于 Microsoft Access 到 SQL Server 2016 用户的机器来说,这是一种奇怪的情况。该办公室中有相当多的 Access to SQL Server 用户使用相同的软件,但只有一个用户看到此错误,并且它仅从 2022 年 3 月 3 日开始。在那之前所有代码都在工作。该代码继续为办公室中的其他用户工作。

这种情况的事实:

办公室中没有其他用户在运行相同代码时遇到此问题。这只是一台 Windows 11 机器的问题。许多其他用户拥有较旧的 Windows 10 机器,这些机器在 2023 年 3 月 3 日上午也有 Windows 更新。他们都工作。

问题机器是办公室里最新的机器之一,它运行的是 Windows 11。

有问题的表上的更新后触发器非常简单,只需从插入临时表中获取 int 标识主键,然后将它们插入到具有当前日期/时间的另一个表中。触发器没有 OUTPUT 子句。触发器确实有一个 INSERT INTO 子句。我试图重写触发器以不使用插入表中的任何数据,但有问题的表上的任何触发器都导致问题机器出现同样的问题。

有问题的触发器已经使用了很多年,之前没有出现过问题,并且继续为其他用户工作。

我试过了:

我通过简单地直接插入链接的访问表来排除访问代码作为罪魁祸首。使用触发器,直接插入访问链接表(回避所有访问代码)也失败,并出现上述相同的错误。所以这是一个 Access/ODBC/SQL Server 插入问题。

我还能够使用 T-SQL 将直接插入到 SQL Server 中的表中,而不会引发相同的错误,但触发器触发就好了。其他 Access 用户也使用相同的 Access 前端插入同一个表,使用 Access to ODBC driver 17 to SQL Server 2016 没有问题。

当我禁用触发器并从有问题的 Windows 11 机器上尝试它时,对于数据库中其他地方的另一个表上具有不同触发器的另一个表,出现了同样的错误。

问题机器安装了 ODBC SQL Server Driver 18。我卸载了驱动程序 18 并安装了 ODBC SQL Server 驱动程序 17,然后重新启动并再次尝试,同样的问题出现在带有驱动程序 17 的问题机器上。ODBC SQL Server 驱动程序 18 在其他机器上一直是个问题,所以我将 ODBC 驱动程序 17 安装在问题机器,但问题仍然存在。

这似乎是 Access to ODBC 17/18 to SQL Server 2016 的问题,但确切原因仍然是个谜。我预计问题是由 2023 年 3 月 3 日的 Windows 更新引起的,但另一种选择是病毒。我用 Windows Defender 扫描了机器,没有发现病毒。它可能是病毒或 2023 年 3 月 3 日的 Windows 更新。我的预感是 Windows 更新导致了它。

如果其他人看到了这个问题或有任何其他见解,请告诉我。我最近没有发现任何关于此错误的结果。如果您在最近的 Windows 更新中看到此错误,请发表评论。由于该问题的流量很少,病毒的可能性仍然令人担忧。

ms-access triggers odbc sql-server-2016 odbc-sql-server-driver
1个回答
0
投票

我的两台计算机也有这个问题,我可以确认这两台计算机上都安装了日期为 1/March/2023、5/March/2023 的 Windows 更新。我试图卸载这些更新,但它并没有消失。尝试从 10 升级 Windows 11,但没有解决问题。在另一个论坛上有人说微软已经意识到这个问题。

那些没有这些更新的计算机可以毫无问题地工作。您是否尝试过将系统恢复到 2023 年 2 月 28 日之前的任何日期?我做不到。

© www.soinside.com 2019 - 2024. All rights reserved.