首页 > 解决方案 > 尝试从链接服务器检索数据 - 在“等待初始通信数据包”时丢失与 MySQL 服务器的连接,系统错误:10060”

问题描述

我有一个在 MySQL 数据库上连接和存储数据的应用程序,我需要在另一个使用 SQL Server 数据库的应用程序的视图中连接和检索这些数据。我试图处理这个问题是在 SQL Server 中创建一个连接到 MySQL 服务器的链接服务器。

这似乎有效,所有连接都已通过,如果我运行以下查询

SELECT * FROM MYSQLLINK...table1` or `SELECT * FROM OPENQUERY(MYSQLLINK, 'SELECT * FROM table1')

我得到结果。

问题

问题是,我想创建一个视图来连接相当多的引用表(我实际上有 20 个连接,但它正在连接同一个表,因为它是一个很大的引用表。)但是在执行SELECTorCREATE VIEW我得到以下错误。

链接服务器“MYSQLLINK”的 OLE DB 提供程序“MSDASQL”返回消息“[MySQL][ODBC 5.1 Driver]Lost connection to MySQL server at 'waiting for initial communication packet',系统错误:10060”。消息 7303,级别 16,状态 1,第 4 行无法初始化链接服务器“MYSQLLINK”的 OLE DB 提供程序“MSDASQL”的数据源对象。

Completion time: 2020-01-19T22:00:00.1759949-04:00

我不确定为什么会发生这种情况,如果有任何人可以帮助解决这个问题并帮助减轻这个错误,这将允许创建和查询我的视图,我将不胜感激。

我注意到如果我注释掉 85% 的连接,查询不会失败。我会在哪里增加提到的书本的时间?

我还应该提到 MySQL 在 AWS 服务器上,而 SQL Server 在我的本地主机上。

标签: mysqlsql-serverlinked-server

解决方案


我无法在本地端重新创建失败测试用例,但是您提到的内容指导我们遵循以下指示:

  • 您的链接服务器连接超时(可能)
  • 超时的潜在原因可能是查询的高响应时间(连接很多参考表的视图)

改变方法怎么样:

  • 你能在 MySQL 而不是 SQL Server 上创建视图吗?
  • 视图结果的具体化是一种选择吗?
  • 或者,如何在 SQL Server 端编写一个存储过程,并使用临时表存储中间结果,一次一次(或一次一次尽可能多地)连接您的表?

推荐阅读