有时无法建立与SQL Server

时间:2017-04-21 13:01:53

标签: .net sql-server ms-access firewall

我们在Microsoft Access 2000中有一个应用程序(抱歉,无法帮助它),连接到SQL Server 2008 R2 Express,并且它没有任何连接问题。我们的应用程序使用.NET ActiveX控件,该控件必须连接到同一个SQL Server。有时它有效,有时它不起作用。如果没有,我收到以下错误消息:

  

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误26: - 查找指定的服务器/实例时出错)

似乎与防火墙有关。当我关闭运行SQL Server的服务器上的Windows防火墙时,仅针对"域网络设置",并立即再次打开它,问题解决了一段时间(几个小时)

2 个答案:

答案 0 :(得分:1)

系统管理员似乎找到了答案。他检查了防火墙日志文件,发现UDP协议阻止了端口号1434,因此他必须在防火墙设置中打开它。

  

SQL浏览器服务使用端口1434,它允许连接到使用动态端口的SQL Server的命名实例,而不必知道每个命名实例正在使用哪个端口,特别是因为这可以在命名实例的重新启动之间进行更改。 [link]

答案 1 :(得分:0)

如果您是在家工作(例如,本地Windows 7、8.1、10计算机),并且尝试连接到远程数据库(通过SQL Server数据库引擎,使用SSMS),则可能是您想要的。

转到Windows防火墙: 首先,创建一个新的 OUTBOUND 规则,选择“端口”,然后“允许” TCP端口1433。 然后,创建一个新的 OUTBOUND 规则,选择“端口”,并“允许” UDP端口1434。 最后,找到您的SSMS路径。 (例如,右键单击SSMS快捷方式,转到属性,找到“目标”路径,然后将其复制。 然后,创建一个新的出站规则,选择程序,粘贴到您复制的路径中,并允许它。

就是这样。

注意:如果您实际上是在物理服务器上或托管数据库的虚拟机上,则应遵循相同的步骤,但应创建INBOUND规则。

希望这会有所帮助,对我有帮助。 :-)