我有一个小应用程序,它使用位于远程计算机上的SQL-Server express 2005数据库。这已经工作多年了。我不仅可以通过应用程序访问它,还可以在开发机器上访问它。有一天,我进入服务器(Windows 7机器)关闭停电。从那时起,我无法访问数据库并收到错误26.我检查了防火墙,确实有sqlbrowser和UDP 1434设置的例外。我还检查了Configuration Manager和SQL Server(SQLEXPRESS)以及SQL Server Browser都在运行。 (甚至两者都重启)
为共享内存,TCP / IP和命名管道启用了客户端协议。
这是奇怪的地方(至少对我而言)。开发计算机和使用与数据库一起使用的应用程序的计算机都设置为“获取IP地址”。如果我将它们设置为静态地址,那么他们就可以毫无问题地访问数据库。我想不必设置静态IP,让事情在过去几年中以他们的方式运行。这是否说明我可能需要检查的内容,以了解为什么在远程计算机上没有静态IP的情况下我无法再访问此服务器?
服务器是2007 pro和开发机器。使用该应用程序的远程计算机是Windows 10 pro。
我还应该声明我可以通过Windows网络浏览网络并访问普通共享,无论是否有来自两台计算机的静态IP。
编辑:我不使用静态IP时得到的确切消息是:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)(Microsoft SQL Server)
即使尝试使用Microsoft SQL Server Management Studio Express进行连接,我也会收到此错误。
答案 0 :(得分:0)
经过多次安装后,我了解到在防火墙中打开SQL Server端口总是在使用默认实例时工作,但是使用命名实例和SQL浏览器打开端口有时并不能防止用于阻止连接的防火墙,特别是在没有像您描述的那样的适当服务器的小环境中(我认为它与SQL Server默认使用命名实例的动态端口功能相关,但我不确定。
当我必须使用命名实例而不是打开端口时,我为程序本身创建了规则,并且它一直运行良好。使用New rule
>创建两个规则Programs
> This program path
,一个用于:
C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe
和其他:
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe
(使用SQLEXPRESS
实例时,此位置可能略有不同)。
我通常只为私人网络位置创建规则,但也许您应该为所有位置创建规则以确保(如果这样做,请尝试从规则中取消选中公共位置)。
对于将来的安装,请注意您可以将Express版本配置为在安装时使用默认实例MSSQLSERVER
(并且在安装时仅 ),使用该选项只需打开端口1433和你完成了。