链接服务器从 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
我正在尝试从基于办公室的 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