简体   繁体   English

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

[英]Connecting to Sphinx from sql server linked server

I am trying to connect to Sphinx from SQL Server Management Studio as a Linked server. 我试图从SQL Server Management Studio连接到Sphinx作为链接服务器。 I tried the following query: 我尝试了以下查询:

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

And i am getting the following exception: 我得到以下例外:

Title: Microsoft SQL Server Management Studio 标题: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. 链接服务器“SPHINX_SEARCH”的OLE DB提供程序“MSDASQL”报告错误。 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". 无法为链接服务器“SPHINX_SEARCH”初始化OLE DB提供程序“MSDASQL”的数据源对象。 (Microsoft SQL Server, Error: 7399). (Microsoft SQL Server,错误:7399)。

While connecting to Sphinx from MySQL is working via the following command: 从MySQL连接到Sphinx时,通过以下命令工作:

mysql -h 127.0.0.1 -P 9306

Any suggestions? 有什么建议?


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

Tested with Manticore, but should work with Sphinx too: 与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 is System DSN name set in ODBC Administrator. manticore是ODBC管理器中设置的系统DSN名称。

In sphinx.conf you need to set mysql_version_string to 5.1.1 (or anything greater than 4.1.1) to replace the actual daemon version. 在sphinx.conf中,您需要将mysql_version_string设置为5.1.1(或大于4.1.1的任何值)以替换实际的守护程序版本。 Otherwise the ODBC driver will refuse to work with the searchd daemon (because sees server version as being too old). 否则ODBC驱动程序将拒绝使用searchd守护程序(因为将服务器版本视为太旧)。

Update based on comments 根据评论更新

The issue was solved after installing the latest Sphinx release 3.1.1. 安装最新的Sphinx版本3.1.1后,问题得以解决。 There was some bug related to MySQL client in release 3.0.3. 版本3.0.3中有一些与MySQL客户端相关的错误。

Did you check in SQL Server Management Studio under "Server Objects > Linked Servers > Providers" if your MSDASQL Provider is listed here and is installed properly? 如果此处列出了MSDASQL Provider并且安装正确,您是否在“服务器对象>链接服务器>提供程序”下签入SQL Server Management Studio?

Also you could try to open the properties for this provider and check the "allow inprocess" option there and check again if you can connect. 您也可以尝试打开此提供程序的属性并检查其中的“allow inprocess”选项,并再次检查是否可以连接。

You also might want to check this link for further things you can try: 您也可以查看此链接以获取更多可以尝试的内容:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM