链接服务器从 SQL Server 2014 到 MySQL

Linked Server from SQL Server 2014 to MySQL

我正在尝试从基于办公室的 SQL 服务器安装到远程 MySQL 数据库创建一个链接服务器。我已尝试使用 SQL 服务器向导以及 T-SQL 代码来执行此操作。我目前使用的代码如下所示:

EXEC master.dbo.sp_addlinkedserver @server='MYSQL', @srvproduct='MYSQL', @provider='MSDASQL',
@datasrc='TestConnection', @provstr='DRIVER={MySQL ODBC 5.2 Unicode Driver};SERVER=111.111.111.111;Port=111;USER=user;PASSWORD=password;OPTION=3;DATABASE=TestDatabase;'

我已经用测试示例替​​换了所有敏感数据。

我已经从我的 PC 在本地创建了到 MySQL 数据库的 ODBC 连接并对其进行了测试,连接工作正常。我什至在 MySQL Workbench 中使用了相同的详细信息,所以我知道连接详细信息没有问题。

当我运行上面的代码时它说连接已经创建但是当我在SQL服务器中导航到它时我得到错误:

Cannot initialize the data source object of the OLE DB provider "MSDASQL" for linked server "MYSQL", (Microsoft SQL Server, Error:7399)

我确实印象深刻,因为我已经使用正确的用户名和密码在 ODBC 中建立了连接,我真的不需要将它们包含在上面的语句中,但我已经尝试过使用和不使用但是使用没有成功。此问题是否与设置 SQL 服务器登录以允许上述所有情况发生有关?

如有任何帮助,我们将不胜感激。

我无法准确回答您的问题,但我会 post 我的连接设置说明和脚本 - 也许会有帮助。 IIRC MySQL 驱动程序版本在某种程度上很重要。

/*
MySQL ODBC driver version 5.13 (install on SQL server)
System DSN name: my_web (create on SQL server, configure, test connectivity)
ODBC options: (leave default)
MSDASQL provider options (set in SSMS):
    Nested queries
    Level zero
    Allow inprocess
    Supports Like
*/

-- run next to drop linked server definition named 'my_web_linked', if required
--exec master.dbo.sp_dropserver N'my_web_linked', 'droplogins'

exec master.dbo.sp_addlinkedserver 
    @server = N'my_web_linked', 
    @srvproduct=N'MySQL', 
    @provider=N'MSDASQL', 
    @datasrc='my_web'

exec master.dbo.sp_addlinkedsrvlogin 
    @rmtsrvname=N'my_web_linked',
    @useself=N'False',
    @locallogin=NULL,
    @rmtuser=N'MySQL user name here',
    @rmtpassword=N'MySQL password value here'

-- run next to test connection - assuming you have table named test on mysql db
--select * from my_web_linked...test