Linked SQL Server 的表显示所有字段为#Deleted,但转换为本地时,所有信息都在那里

Posted

技术标签:

【中文标题】Linked SQL Server 的表显示所有字段为#Deleted,但转换为本地时,所有信息都在那里【英文标题】:Linked SQL Server's table shows all fields as #Deleted, but when converted to local, all information is there 【发布时间】:2019-10-18 15:48:17 【问题描述】:

我的公司有一个非常旧的 Access 2003 .ADP 前端连接到本地 SQL Server。我试图将前端更新到 MS Access 2016,这是我们正在过渡到的,但是在链接表时,我将这个特定表中的所有字段都作为#Deleted。我环顾四周并尝试更改一些设置,但我真的不是 SQL Server 知道我在做什么,因此寻求帮助。

将表格转换为本地时,所有信息都正确显示,所以它引出了问题。此外,跳到最后一条记录会显示该记录的信息,或者排序/过滤会显示一些记录,但大多数表保持“#Deleted”...

因为我知道你会问:是的,我需要编辑记录。虽然快照方法适用于试图查看信息的人,但我们中的一些人需要编辑它。

我希望有人能对此有所了解,

提前致谢,拉斐尔。

【问题讨论】:

请编辑您的问题并为有问题的表添加 CREATE TABLE 语句。某些 SQL Server 数据类型不适用于 Access。另外,您使用哪个 ODBC 驱动程序来链接表? 不是SQLServer,而是SQL Server 曾经想过在客户端运行 Office 2016 时将 Access 2003 服务为 RemoteApp。在将 ADP 转换为 ACCDB 时肯定会有更多陷阱。 【参考方案1】:

这有 3 个常见的原因:

您在 SQL Server 中有位字段,但它们为空。应为它们分配默认值 0。

有问题的表没有 PK(主键)。

最后但并非最不重要的是,您需要(想要)添加一个时间戳列。请记住,这实际上是我们所说的“行版本”列(因此它不是日期/时间列,而是时间戳列)。添加此列将有助于访问确定记录是否已更改,尤其是 Access 中允许编辑“实数”数据类型(单、双)的任何表/表单的情况。如果访问没有找到时间戳列,则它会恢复为逐列比较以确定表更改,并且由于计算机如何处理“实数”数字(四舍五入),因此此类比较通常会失败。

因此,请检查上述 3 个问题。您可能应该重新运行链接表管理器进行任何更改。

【讨论】:

以上是关于Linked SQL Server 的表显示所有字段为#Deleted,但转换为本地时,所有信息都在那里的主要内容,如果未能解决你的问题,请参考以下文章

怎样导出sql server2000的表结构(不含数据)

SELECT * FROM MySQL Linked Server 使用没有 OpenQuery 的 SQL Server

sql server 删除所有的表

sql server2008怎么实现查询某个数据库中所有的表名

如何从 SQL Server 中特定数据库的表中获取所有列名?

Access Linked Tables 看不到新的 SQL Server 表