【发布时间】:2020-02-11 16:37:38
【问题描述】:
我有一个使用 SQL Server 2012 作为后端的 Access 2016 数据库(我必须使用它,因为这是客户端安装的)。我有一个非常奇怪的问题。在这个数据库中有两个表,它们的主键字段也是 Identity(1,1)。我能够毫无问题地将表链接到 Access(链接表管理器默认使用 ODBC 驱动程序 2013)。这些表在 Access 中显示为主键自动编号。到目前为止,一切顺利。
但是,当我退出 Access 并重新进入时,我发现虽然表仍处于连接状态,但它不再为新记录添加自动编号。换句话说,当我进入表格设计时,自动编号消失了,Access “忘记了”我将其设为身份字段,即使它仍然存在于 SQL Server 中。因此,我显然得到了“无法将 NULL 值插入...”错误,即使它之前添加了 Autonumber/Identity 就好了。
我找到的唯一解决方案是取消所有表的链接(不仅仅是刷新)并重新执行链接表管理器流程。我还尝试了使用 SQL Server Native Client 2011 的自定义 ODBC 字符串,但是在执行此操作并导入时,管理器要求我在这些表上定义一个主键,就好像它们在 SQL Server 中没有 PK 一样,当他们显然做。
我可能使用了错误的驱动程序吗?我应该把它放在我的 SQL2019 实例上并要求他们升级吗?由于我们已经完成了数据迁移,这将是更多的工作,所以我宁愿从 2012 年“升级”到 2019 年作为最后的手段。
【问题讨论】:
标签: sql-server ms-access odbc