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,但转换为本地时,所有信息都在那里的主要内容,如果未能解决你的问题,请参考以下文章
SELECT * FROM MySQL Linked Server 使用没有 OpenQuery 的 SQL Server
sql server2008怎么实现查询某个数据库中所有的表名