【问题标题】:Import from MS SQL Server to MS Access via ODBC lost all indexes通过 ODBC 从 MS SQL Server 导入到 MS Access 丢失了所有索引
【发布时间】:2019-07-09 17:18:43
【问题描述】:

我使用 SQL Server 2014 / 2017(任一表达式版本),出于某些原因,我尝试将数据从 SQL Server 数据库移动到 MS Access,但我现在面临的是,在每个表的每个字段上创建的所有索引SQL Server 不会转移到 MS Access (2016)。

目前,解决方法是:我必须转到需要设置标志的表:索引例如:

有什么解决方案可以将所有索引从 SQL Server 保留到 Access?

【问题讨论】:

  • 您做的是正确的事情,只需在 Access 中重新创建索引。这不是问题。从 SQL 服务器获取索引列表可能会有所帮助
  • “为什么”将取决于您是如何进行“导入”的,但大多数仅执行基本表复制的工具仅复制列定义和数据,而不是索引、约束或其他物体。您最好在目标数据库中创建架构,然后复制数据。
  • 为什么要导入数据而不是使用链接表?
  • @Osify - 我看不到您为链接表描述的行为。如果我在 Access 中链接 SQL Server 表,我会在设计视图中看到 Access 链接表的索引。但是,导入 到 Access 中的表不带索引,甚至不带主键。 :(
  • 导入或传输数据库命令不会引入 PK 和所有索引。但是,在导航窗格中,右键单击并转换为本地表确实会引入所有 PK 和索引。因此,下面的代码可用于导入 PK 和所有激活的索引。

标签: sql-server ms-access odbc


【解决方案1】:

您至少可以从 SQL 服务器获取 PK 和索引。

有两种方法可以做到这一点。

从图形用户界面?

只需链接到有问题的表(创建一个链接到 sql server 的表)。

然后在导航窗格中,只需右键单击链接表并选择“转换为本地表”。

因此,以上内容将保留 PK(和索引)。对于任何其他具有索引的列,您会发现 Access 还会为您保留(创建)本地索引。

如果您使用的是代码?

然后,首先创建链接表。

然后执行隐蔽到本地表。

例如这段代码:

Dim strCon        As String
strCon = CurrentDb.TableDefs("dbo_TimeTest1").Connect

DoCmd.TransferDatabase acLink, "ODBC Database", strCon, acTable, _
           "dbo.tblbooking", "tblBookingLocal2", False, True
DoCmd.SelectObject acTable, "tblBookingLocal2", True
DoCmd.RunCommand acCmdConvertLinkedTableToLocal

在上面,我只是从另一个链接表中抓取了一个“已知”和现有的连接字符串到同一个 SQL 数据库。

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多