从sql server链接服务器连接到Sphinx

Yah*_*ufi 6 sql-server ssms sphinx linked-server sql-server-2014

我试图从SQL Server Management Studio连接到Sphinx作为链接服务器.我尝试了以下查询:

EXEC master.dbo.sp_addlinkedserver @server=N'SPHINX_SEARCH', @srvproduct=N'', @provider=N'MSDASQL', @provstr=N'Driver={MySQL ODBC 8.0 ANSI Driver};Server=127.0.0.1;Port=9306,charset=UTF8;User=;Password=;OPTION=3'
GO
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'SPHINX', @useself=N'False',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
GO
Run Code Online (Sandbox Code Playgroud)

我得到以下例外:

标题:Microsoft SQL Server Management Studio

与链接服务器的测试连接失败.

附加信息

链接服务器"SPHINX_SEARCH"的OLE DB提供程序"MSDASQL"报告错误.提供商未提供有关错误的任何信息.无法为链接服务器"SPHINX_SEARCH"初始化OLE DB提供程序"MSDASQL"的数据源对象.(Microsoft SQL Server,错误:7399).

从MySQL连接到Sphinx时,通过以下命令工作:

mysql -h 127.0.0.1 -P 9306
Run Code Online (Sandbox Code Playgroud)

有什么建议?


Sphinx版本:3.0.3,SQL Server版本:2014,MySQL版本:5.6

小智 3

使用 Manticore 进行测试,但也应该与 Sphinx 一起使用:

EXEC master.dbo.sp_addlinkedserver @server = N'Search',
@srvproduct=N'manticore', @provider=N'MSDASQL', @datasrc=N'manticore',
@provstr=N'Driver={MySQL ODBC 8.0 ANSI Driver};
Server=127.0.0.1;Port=9306,charset=UTF8;User=;Password=;'
Run Code Online (Sandbox Code Playgroud)

manticore是在 ODBC 管理器中设置的系统 DSN 名称。

在 sphinx.conf 中,您需要将mysql_version_string设置 为 5.1.1(或任何大于 4.1.1 的值)以替换实际的守护程序版本。否则,ODBC 驱动程序将拒绝与 searchd 守护进程一起工作(因为认为服务器版本太旧)。

根据评论更新

安装最新的 Sphinx 版本 3.1.1 后问题得到解决。3.0.3 版本中存在一些与 MySQL 客户端相关的错误。