当我尝试连接SQL Server时,我得到以下错误:

在建立与SQL Server的连接时,发生了与网络相关或特定于实例的错误。未找到服务器或无法访问服务器。验证实例名称是否正确,SQL Server是否配置为允许远程连接。(提供商:Named Pipes提供商,错误:40 -无法打开到SQL Server的连接)

当我试图在Visual Studio 2010中将数据库配置为gridview时抛出此错误。我不知道如何调试这个错误。

如何调试此错误?除了错误消息中提到的步骤之外,我还应该采取哪些步骤来确定这里到底发生了什么?


当前回答

当我想在另一台PC上运行我的WinForms项目(包括使用SQL Server数据库,并且在我的PC上工作得很好)时,我也犯了同样的错误。问题出在我电脑的Windows防火墙上。我通过添加两条规则来解决这个问题。这是如何允许SQL Server通过Windows防火墙的整个过程:

打开“运行”,输入services.msc 查找用于SQL Server(实例名)和SQL Server Browser的服务。一次一个,右键单击,选择“属性”,复制路径到exe文件 然后打开防火墙。cpl,单击允许应用程序或添加规则,添加之前复制的路径(有一个步骤需要遵循),选中域和私有,取消选中公共。

这是YouTube的链接,你可以看到这个过程:允许SQL Server通过Windows防火墙

其他回答

这也可能是简单的事实,你的数据库实际上不是MS SQL Server。例如,如果你的数据库实际上是MySql,你试图用System.Data.SqlClient连接它,你会得到这个错误。

到目前为止,大多数ADO的例子。Net将用于MSSQL,没有经验的用户可能不知道你不能在MySql中使用SqlConnection, SqlCommand等。

虽然所有的ADO。Net数据提供程序遵循相同的接口,您必须使用为您的数据库提供程序。

I got this error after working at distance (VPN) for a few years. At some point in time I must have changed my DNS settings to the IP address of my home router. Now I was (again) in the same network as the server, and got the error above. the solution was to open "Network status" / "Change adapter options" and right click the active internet connection (Ethernet in my case) to get to the properties of IPv4. Under "Use the following DNS server addresses" I entered the local IP address of my server, and what do you know...! The computer contacted the domain (on the server) and SQL Server opened up.

要检查是否有相同的问题,打开cmd并输入 夜间电报/ dsgetdc:域名 [用域名交换"domainname"] 如果您得到一条消息说“获取DC名称失败:Status = 1355 0x54b ERROR_NO_SUCH_DOMAIN”,您可能是域名错误,或者您可能有这个问题。

在做了上面提到的所有事情之后: http://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a-connection-to-sql-server-microsoft-sql-server-error/ 对我来说还是没用。

以下步骤对我很有效:

开始>执行> cmd > sqlcmd -L

它将提示您服务器名。确保此服务器名称与SQL management studio的CONNECT to server框中试图连接的服务器名称相同。

我犯了这个愚蠢的错误,我一直使用MSSQLSERVER而不是使用这个服务器名。

希望这对像我一样犯愚蠢错误的人有所帮助。

谢谢。

此错误主要发生在SQL服务停止时。您需要重新启动服务。要进入这个窗口,您必须像这样搜索服务-

然后搜索“SQLSERVER(MSSQLSERVER)”,并重新启动服务。

希望这能奏效。

重启SQL Server (MSSQLSERVER)服务即可。