【问题标题】:Access Linked Table from SQL Shows #Delete从 SQL 访问链接表显示 #Delete
【发布时间】:2021-12-30 12:51:18
【问题描述】:

我创建了这张表:

CREATE TABLE [dbo].[dbo_Country]
(
    [Country] [nvarchar](100) NOT NULL,
    [ISO3166Code] [smallint] NULL,
    [CountryEn] [nvarchar](255) NULL,
    [Abriviation] [nvarchar](255) NULL,

    CONSTRAINT [dbo_Country$PrimaryKey] 
        PRIMARY KEY CLUSTERED ([Country] ASC)
                WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
                      IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
                      ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

然后我将它链接到一个 MS Access 数据库我尝试打开表并查看信息,但看到了这个:

有人有解决办法吗?

【问题讨论】:

  • 拼写更正:它是缩写 - 不是“缩写”

标签: sql-server ms-access linked-tables


【解决方案1】:

#Deleted 通常在表在 Access 中打开时在底层数据库表中删除行时显示。它们可能已被您在另一个窗口或其他用户删除。 #Deleted 在 Access 中打开表时最初不会显示。键入 Shift-F9 重新查询。删除的行应该会消失。

【讨论】:

  • ???? 不,这不是总是显示这个的原因。假设这是一个单用户数据库
  • 这种效果对我来说是新的,我很抱歉。您可以在 SSMS 中使用 XEventProfiler。在 Access 中打开表时,Access 应首先查询主键列 (SELECT "dbo"."dbo_Country"."Country" FROM "dbo"."dbo_Country") 的所有值。然后它应该通过exec sp_prepexec ... 获取前 10 行,并通过exec sp_execute ... 获取接下来的 10 行,但与可见行所需的数量一样多。这可能会给你一个提示。
  • 感谢您的评论,我发现这是由主键引起的。当 SQL 表的主键是 nvarchar(x) 类型时,将表链接到 MS-Access 无法正常工作。当主键是数字字段时,它看起来不错,但这些是客户端的数据,我无法更改它们
  • 如果你不能改变它们你就不能......如果你找到了办法,你可以考虑在表中添加一个rowversion列。这帮助我在许多情况下避免了冲突。
【解决方案2】:

为数字设置默认值 0 (ISO3166Code) (将所有现有数字列更新为 = 0。)

添加行版本列(时间戳 - 不是日期时间)。

重新链接您的表格。

这是一个由来已久的问题。如果位字段(或 int)为空,那么您将收到该错误。如前所述,还要添加一个时间戳列(不是日期时间列)。

【讨论】:

    猜你喜欢
    • 2019-07-15
    • 2015-06-09
    • 2012-07-09
    • 2012-01-21
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    相关资源
    最近更新 更多