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

Connecting to Sphinx from sql server linked server

我正在尝试从 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

我收到以下异常:

Title: Microsoft SQL Server Management Studio

The test connection to the linked server failed.

Additional information

The OLE DB providcer "MSDASQL" for linked server "SPHINX_SEARCH" reported an error. The provider did not give any information about the error. Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "SPHINX_SEARCH". (Microsoft SQL Server, Error: 7399).

虽然从 MySQL 连接到 Sphinx 正在通过以下命令工作:

mysql -h 127.0.0.1 -P 9306

有什么建议吗?


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

如果您的 MSDASQL 提供程序在此处列出并且安装正确,您是否在 "Server Objects > Linked Servers > Providers" 下检查 SQL Server Management Studio?

您也可以尝试打开此提供程序的属性并检查那里的 "allow inprocess" 选项,然后再次检查是否可以连接。

您可能还想查看此 link 以了解您可以尝试的更多内容:

https://support.microsoft.com/en-us/help/2450479/you-get-7399-and-7300-error-messages-when-accessing-a-linked-server

已使用 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 客户端相关的错误。