SQL Server 链接服务器连接随机“卡住”

Posted

技术标签:

【中文标题】SQL Server 链接服务器连接随机“卡住”【英文标题】:SQL Server Linked Server connection gets "stuck" randomly 【发布时间】:2021-09-13 15:15:10 【问题描述】:

我有一个 Access DB,我使用 Microsoft Office 12.0 Access Database Engine OLE DB Provider 将它连接到 SQL Server 2012 (v11.0.7507) 作为链接服务器。

连接通常工作正常,但有 2 个自动作业可以推送/拉取数据并更新 Access DB 中的一些其他数据,其中任何一个有时(不经常但有时)在连接到 Access DB 时会“卡住” . SQL Server 中的会话是可见的,但无法被终止 - 或者实际上当我尝试终止它时,它会卡在 KILLED/ROLLBACK 状态。

没有MSACCESS.EXE 在任务列表中打开,但是管理工具的打开文件部分确实显示了 SQL 代理打开的 accdb(和 laccdb)文件。不幸的是,在那里关闭它们并不能解决问题,accdb 和 laccdb 文件仍然被锁定。

唯一的解决方案是重新启动 SQL Server,然后删除 laccdb 文件,但这不是一个很舒服的解决方案。

我尝试搜索类似的问题,但到目前为止没有找到可行的解决方案。主要问题是(看似)随机性。 大家有没有遇到过类似的情况?你知道这个设置有什么问题吗?

非常感谢。

【问题讨论】:

SQL Server 日志中是否有任何错误? 尝试使用更新的本机 17 驱动程序访问 SQL 服务器。他们有一些标准的“sql server driver”没有的内置重新连接能力。这确实意味着您必须在该计算机上为 SQL Server 安装本机 17 odbc 驱动程序,但我会尝试一下。您必须重新链接 Access 表并使用基于新驱动程序的 DSN。 错误日志并没有真正提供信息......我唯一能从中得到的是:读取地址0000001659E8AA81发生访问冲突异常代码= c0000005 EXCEPTION_ACCESS_VIOLATION我猜这与laccdb有关卡住。关于较新的驱动程序,我们尝试安装它们,但它们尚未可用 - 可能需要重新启动服务器。下次重启后我们会看到。 【参考方案1】:

Access OleDb 提供程序在无人参与的应用程序中的支持非常有限,并且永远不应加载到长期存在的应用程序中。见download site上的注释:

Office System 驱动程序仅在某些情况下受支持, 包括:

    读取和写入各种文件的桌面应用程序 格式包括 Microsoft Office Access、Microsoft Office Excel 和 文本文件。 在支持的文件格式和 数据库存储库,例如 SQL Server。例如,传输数据 使用 SQL Server 导入和从 Excel 工作簿到 SQL Server 导出向导或 SQL Server 集成服务(提供 SSIS 作业在登录用户的上下文中运行,并且具有有效的 HKEY_CURRENT_USER 注册表配置单元)。

尝试使用单独的短期进程而不是链接服务器。 SSIS 包是一种常见的选择。

【讨论】:

感谢您提供有用的信息和建议。我昨天设置了 SSIS 包。我们将看看这是否能解决问题 - 这些锁定在过去 6 周内发生了 4 次,因此如果至少 3-4 周一切顺利,那么我认为可以安全地假设它有效。

以上是关于SQL Server 链接服务器连接随机“卡住”的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008 如何配置链接服务器访问 SQL Server2000?

SQL Server 2008 如何配置链接服务器访问 SQL Server2000?

sql server怎么设置链接服务器

sql server 2008 链接 ORACLE 问题

Wildfly + SQL Server 连接随机关闭且未恢复

SQL Server 不同数据间建立链接服务器进行连接查询