SQL 服务器 2016 在 Link 到 MySQL 上神秘地失败(错误 #7303),但访问 2016 成功使用相同的系统 DSN

SQL Server 2016 Fails Cryptically (Error #7303) on Link to MySQL, But Access 2016 Succeeds with Same System DSN

我正在麦田圈里转转,试图建立一个 linked 服务器(从 SQL Server 2016 到 MySQL)。

这是我使用的基本程序:Create a Linked Server to MySQL from SQL Server。单击“确定”创建新的 linked 服务器后,我收到以下 SSMS 2016 痉挛消息,错误 #7303:

The linked server has been created but failed a connection test. Do you want to keep the linked server?

Additional information:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "MYSQL".
OLE DB provider "MSDASQL" for linked server "MYSQL" returned message "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified". (Microsoft SQL Server, Error: 7303)

我尝试了包含提供程序字符串和目录的变体(同样的错误):

我尝试了最新的 MySQL ODBC ANSI/Unicode 驱动程序 (5.03.07.00),通过系统 DSN 在 32 位和 64 位版本的 ODBC 数据源管理器中设置。

现在,我怀疑 MS SQL 服务器 and/or 它的 OLE-DB 提供程序 (MSDASQL) 发生了一些奇怪的事情,因为:

  1. ODBC 数据源中系统 DSN 的所有测试 管理员成功。

  2. Crippled Access 2016 能够 link(通过上述 Unicode 系统 DSN) 到 MySQL 就好了,用最少的努力,列出所有数据库 和表格。

SQL Server 2016 需要什么魔法才能使 linked-server 对话框不会导致上述错误?

两件事--

  1. 产品名称应该是MSDASQL.

  2. Provider StringCatalog 留空(这些通常由您的 DSN 定义处理)。

应该这样做...