AdomdConnection 抛出“检查 'SQL Browser' 服务是不是正在运行”错误

Posted

技术标签:

【中文标题】AdomdConnection 抛出“检查 \'SQL Browser\' 服务是不是正在运行”错误【英文标题】:AdomdConnection throwing "Check that 'SQL Browser' service is running" errorAdomdConnection 抛出“检查 'SQL Browser' 服务是否正在运行”错误 【发布时间】:2016-10-20 13:36:12 【问题描述】:

我正在尝试使用以下代码:-

using (AdomdConnection conn = new AdomdConnection(_connString))

    conn.Open();

    Console.WriteLine(conn.ConnectionString);
    Console.WriteLine(conn.Cubes.Count);

无论有无conn.Open() 行都会引发以下错误:-

A connection cannot be made to redirector. Ensure that 'SQL Browser' service is running.

我正在使用的客户端计算机上没有可用的 SQL Browser 服务。但让我烦恼的是,这个完全相同的连接字符串在 Excel 中工作,并拉回一组 OLAP Cube 度量值,我可以根据需要对其进行调整。

连接字符串如下:-

Provider=MSOLAP.4;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=RaptorMarketRiskSummary;Data Source=ssasp-raptor\plnqic01_as;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error

有人有什么想法吗?

非常感谢。

【问题讨论】:

请看here @lok​​usking - 谢谢。但是,我试图弄清楚为什么连接字符串可以通过 Excel OLAP 数据透视连接工作,而不是来自 .Net 中的 AdomdConnection。提到的 SQL Browser 服务是可以在服务器上运行的东西。在我看来,如果我可以从 Excel 连接(并且不需要 SQL 浏览器),我应该能够在 .Net 中做同样的事情。 【参考方案1】:

你试过了吗?

这个错误似乎只与命名实例有关。原因是 SQL 客户端无法解析实例,因为 SQL 客户端无法访问 SQL Browser 服务。 SQL 浏览器服务解析实例名称

1.确保SQL浏览器服务正在运行

2.确保SQL浏览器服务运行的端口没有被PC阻塞(默认端口2382)

或者,您可以通过在客户端连接属性中提及“服务器:端口”而不是“服务器\实例名称”来绕过 SQL 浏览器服务

这是来自: a connection cannot be made to redirector. Ensure that 'sql browser' service is running

看看另一个点:)

【讨论】:

非常感谢。我给了你赏金,因为你是唯一一个好心回答的人!稍后我将自己回答这个问题,因为我的问题比较平淡,但值得为其他人记下。 非常感谢 :) 很抱歉没有帮到你:/【参考方案2】:

原来是这个错误

A connection cannot be made to redirector. Ensure that 'SQL Browser' service is running

可能由与 SQL 浏览器是否正在运行无关的问题引起。 (这是直观的情况,因为我可以从 Excel 连接。)

在我的工作场所,每位员工在网络驱动器上都有一个个人空间。因为我打算让我的应用程序成为一个快速的概念验证来展示 .Net 连接到 OLAP 多维数据集的能力,所以我使用了我个人网络驱动器上的一个文件夹作为暂存区域。然后我尝试连接到另一个数据库(直接,而不是通过多维数据集)并发现我遇到了权限问题。我编译了二进制文件(来自 Visual Studio)并将其放在另一个网络驱动器上,以便同事可以在他的机器上进行测试。在检查二进制文件会引发错误时,我从第二个网络驱动器运行它,它连接良好并带回了一些数据。

将应用改回连接到我的 OLAP 多维数据集并将 Visual Studio 解决方案移动到我的本地 C: 驱动器导致能够正常连接到多维数据集并拉回我想要的数据!

所以:“检查 SQL 浏览器服务正在运行”错误是一个包罗万象的建议,它涵盖了下面的许多问题。权限可能取决于应用程序从哪里运行(即哪个网络驱动器,而不仅仅是驱动器是网络驱动器还是本地驱动器)。

希望这会有所帮助:)

【讨论】:

以上是关于AdomdConnection 抛出“检查 'SQL Browser' 服务是不是正在运行”错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们不能只抛出异常/可抛出而不是有多个异常[重复]

关于java异常抛出与返回值

Java 异常 重写方法时抛出异常

finally中流关闭失败需要抛出异常吗

Java:抛出异常后如何终止执行后面的代码?

JAVA如何抛出异常