Sql server 加载包含链接sql server表的mdb时ms access崩溃

Sql server 加载包含链接sql server表的mdb时ms access崩溃,sql-server,ms-access,odbc,crash,linktable,Sql Server,Ms Access,Odbc,Crash,Linktable,我有一个mdb,它过去包含一堆链接表。这些链接指向另一个Access mdb中的表 作为受控迁移的一部分,我将这些链接表改为指向SQL server实例,方法是迭代所有链接表并将连接字符串更新为ODBC字符串,然后在tabledef上调用RefreshLink 但是,在使用ODBC链接打开新数据库时,Access崩溃。更有趣的是,如果我删除一个特定的链接表(通过ADO),我就可以打开数据库。更有趣的是,如果我通过Access GUI添加链接表,它不会崩溃,因此我知道SQL Server中的表本身

我有一个mdb,它过去包含一堆链接表。这些链接指向另一个Access mdb中的表

作为受控迁移的一部分,我将这些链接表改为指向SQL server实例,方法是迭代所有链接表并将连接字符串更新为ODBC字符串,然后在tabledef上调用RefreshLink

但是,在使用ODBC链接打开新数据库时,Access崩溃。更有趣的是,如果我删除一个特定的链接表(通过ADO),我就可以打开数据库。更有趣的是,如果我通过Access GUI添加链接表,它不会崩溃,因此我知道SQL Server中的表本身没有问题

所以,我需要弄清楚这个特定的链接表是什么导致访问崩溃的。我能得到关于坠机的任何信息以提供帮助吗?我从哪里开始调查这件事

编辑:我尝试了多种刷新链接表的方法,可以是刷新链接,也可以删除并重新创建带有DSN或不带DSN的表,等等。每次打开时,都是同一个表导致mdb崩溃


编辑2:不幸的是,崩溃似乎在某种程度上是源代码控制的问题——如果我禁用了我的SCCAPI提供程序,那么就不会发生崩溃。我仍然不知道如何对此进行调查。

删除链接并创建全新的链接。ODBC链接即使以ODBC链接的形式启动,也无法可靠地进行刷新。

没有链接表的策略更改结果,我们仍然会在同一数据库中由于同一个表而导致相同的崩溃


然而,禁用源代码控制解决了这个问题,没有人提出可能的原因,也没有人提出调查方法,所以我接受“禁用SCC”作为答案来结束这个问题。

我在Access数据库中大量使用MySQL链接表,尽管我做的是ADO连接,而不是ODBC

然而,最近在一个新项目中,我链接到一个新的数据库——一个web后端MySQL——链接很好——测试连接很好——但有一个特定的表链接很好,但尝试打开它——MS Access立即被删除——这是我在任何使用ODBC链接的数据库中从未见过的。 ODBC链接的美妙之处在于它使用DAO而不是ADO,并且您可以将该表视为一个本地表—甚至在这个特定的表上也不需要ADO出错—但没有提供错误代码来帮助

解决了这个问题-这个表有两个JSON类型的字段(实际上只是长文本),但访问被终止-即使使用最新的驱动程序8.0

幸运的是,我与web开发人员取得了联系,这是一个定制的数据库,但JSON字段没有被使用——因此他将它们转换为长文本——瞧,MS Access再次非常高兴

虽然我还没有解决的恼人的问题是链接表将内容显示为#已删除#-并且需要F5刷新来填充-但是对于驱动程序8.0,这是不起作用的


不过,ADO很高兴,作为本地表的复制粘贴链接非常有效。

我同意。编写代码,在启动时删除并重新创建所有链接,然后再执行其他操作。应该很快。您可以将本地表与表列表及其所需的链接一起使用,也可以仅与要连接的服务器一起使用一行(假设所有链接表都应重新创建并将连接到同一服务器,并且链接表的存在将触发其删除和重新创建)。我刚刚想到,ODBC链接能否成功更新取决于ODBC提供程序。例如,到记帐程序MYOB的ODBC驱动程序的链接可以很好地更新,而无需删除和重新创建它们,但根据我的经验,到SQL Server和MySQL的链接无法更新。@emtucifer:实际上,在删除和重新创建表名之前,除了将表名存储在自定义集合或数组中之外,您无需执行任何操作,也无需进行持久存储。拥有一个应显示在dataabse中的表表通常很有用,因此为什么不将其用于链接呢?我看不出把代码和列表混在一起有什么好处。恐怕这不管用。同一个数据库在同一个表上崩溃。把VBA放在这里,看看你们是否认为我做了什么蠢事。