Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 通过ODBC从MS SQL Server导入到MS Access会丢失所有索引_Sql Server_Ms Access_Odbc - Fatal编程技术网

Sql server 通过ODBC从MS SQL Server导入到MS Access会丢失所有索引

Sql server 通过ODBC从MS SQL Server导入到MS Access会丢失所有索引,sql-server,ms-access,odbc,Sql Server,Ms Access,Odbc,我使用SQL Server 2014/2017(任一表达式版本),出于某些原因,我尝试将数据从SQL Server数据库移动到MS Access,但我现在面临的是,在SQL Server中每个表的每个字段上创建的所有索引都不会传输到MS Access(2016) 目前,解决方法是:我必须转到需要设置flag:index的表,例如: 是否有任何解决方案可以保留SQL Server的所有索引以供访问?您至少可以从SQL Server获得PK和索引 有两种方法可以做到这一点 从GUI 只需链接到有问

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

目前,解决方法是:我必须转到需要设置flag:index的表,例如:


是否有任何解决方案可以保留SQL Server的所有索引以供访问?

您至少可以从SQL Server获得PK和索引

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

从GUI

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

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

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

如果您正在使用代码

然后,首先创建链接表

然后执行covert to local表

例如,该代码:

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数据库。

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