从SQL Server链接服务器连接到Sphinx

6

我正在尝试将Sphinx作为联接服务器从SQL Server管理工具连接。我尝试了以下查询:

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

我遇到了以下异常:
标题:Microsoft SQL Server Management Studio
连接到链接服务器的测试失败。
其他信息:
链接服务器“SPHINX_SEARCH”的OLE DB提供程序“MSDASQL”报告了一个错误。该提供程序没有提供有关错误的任何信息。无法初始化OLE DB提供程序“MSDASQL”的数据源对象,用于链接服务器“SPHINX_SEARCH”。 (Microsoft SQL Server,错误:7399)。
而通过以下命令从MySQL连接到Sphinx是可以工作的:
mysql -h 127.0.0.1 -P 9306

有什么建议吗?


Sphinx 版本:3.0.3,SQL 服务器版本:2014,MySQL 版本:5.6


1
尝试使用“在链接服务器属性中使用当前安全上下文登录”作为第三个选项,并将@useself设置为“true”。 - CR241
@CR241仍然无法工作! - Yahfoufi
2个回答

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=;'

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

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

根据评论更新

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


ODBC管理员中未定义系统DSN,同时无法连接到端口9306(来自ODBC管理员)。只能使用命令提示符控制台进行连接。 - Yahfoufi
请注意,我可以创建一个系统 DSN 来连接 MySQL 引擎端口(3306),但无法为 Sphinx(9306)创建。 - Yahfoufi
Unknown MySQL Error - Yahfoufi
1
尝试使用最新版本。与mysql 8客户端相关的一些错误已经修复。 - aditirex
安装最新的Sphinx 3.1.1版本后,问题已得到解决。很抱歉,因为系统将赏金授予了在我尝试你的建议之前提出的答案。 - Yahfoufi

2

MSDASQL已经正确安装,并且“allow inprocess”已经被勾选。 - Yahfoufi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接