无法连接到服务器 - 与网络相关或特定于实例的错误

Posted

技术标签:

【中文标题】无法连接到服务器 - 与网络相关或特定于实例的错误【英文标题】:Cannot Connect to Server - A network-related or instance-specific error 【发布时间】:2013-08-05 14:25:40 【问题描述】:

尝试连接到 SQL Server 时出现以下错误:

与 SQL Server 建立连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)

当我尝试在 Visual Studio 2010 中将我的数据库配置为 gridview 时引发此错误。我不知道如何调试此错误。

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

【问题讨论】:

Ping 对于测试 SQL Server 连接性不可靠,在 Windows Server 中默认禁用 ICMP 回显请求。无效的用户名或密码根本不是错误告诉您的,这是一个完全不同的错误。 试试这篇文章,它几乎涵盖了解决连接问题所需的所有步骤:social.technet.microsoft.com/wiki/contents/articles/… 如果您在第一次设置 SQL Server version Express 时收到此错误,请在此处查看我的答案和屏幕截图。我回到 *** 并再次使用了我的答案,因为它是唯一有效的答案。 ***.com/questions/1391503/… 当我想连接到本地主机时,我的虚拟服务器上出现了这个问题。启动操作系统时似乎出现了某种错误 - 就我而言,幸运的是,一切都通过干净的重启解决了。 我遇到了同样的错误。就我而言,我没有正确拼写服务器的名称。有时是简单的事情。 【参考方案1】:

我发现以下技巧很有帮助:

    确保您的数据库引擎配置为接受远程连接

    开始 > 所有程序 > SQL Server 2005 > 配置工具 > SQL Server 外围应用配置 单击服务和连接的外围应用配置 选择有问题的实例 > 数据库引擎 > 远程连接 启用本地和远程连接 重启实例

    您可能需要为您正在使用的 SQL Server 实例和端口在防火墙上创建例外

    开始 > 运行 > Firewall.cpl 点击例外标签 添加 sqlservr.exe(通常位于 C:\Program Files (x86)\Microsoft SQL Server\MSSQL.x\MSSQL\Bin,检查您安装的实际文件夹路径)和端口(默认为 1433) 同时检查您的连接字符串
    来自FIX : ERROR : Could not open a connection to SQL Server:

    检查您的 SQL 服务器服务是否正常运行

    转到所有程序 > Microsoft SQL Server 2008 > 配置工具 > SQL Server 配置管理器 > SQL Server 服务 检查以确保 SQL Server 服务状态为正在运行。

    此外,请确保您的远程服务器位于同一网络中。运行sqlcmd -L 以确定您的服务器是否包含在您的网络列表中。

    在 SQL Server 配置中启用 TCP/IP

    当两个或多个 SQL Server 通过网络连接时,它们使用 TCP/IP 进行所有通信。 SQL Server 安装的默认端口是 1433。可以通过 SQL Server 配置管理器更改此端口。应启用 TCP/IP 以连接 SQL Server。

    转到所有程序 >> Microsoft SQL Server 2008 >> 配置工具 >> SQL Server 配置管理器 >> 选择 TCP/IP 右键单击 TCP/IP >> 单击启用

    您必须重新启动 SQL Server 服务才能使所有更改生效。右键单击并转到菜单属性以选择可以更改 SQL Server 的默认端口的位置。

【讨论】:

在 SQL Server 配置中启用 TCP/IP 是我使用 SQL Server 2014 Express 时的解决方案。 今天我花了很多时间在这上面,最后对我有用的是:Open Sql Server Configuration Manager --> 的协议 b> --> TCP/IP --> IP 地址(Tab)。转到最后一个条目 IP All 并提及 TCP 端口 1433。现在使用 services.msc 重新启动 SQL Server ()。之后,问题就解决了! 我在本地Sql服务器上也遇到了特殊问题,通过检查操作系统的本地服务并搜索特定的Sql服务并一一启动它们来解决。效果很好。 我也有同样的问题,登录sql server发现mssqlserer服务停止了,启动了。现在能够连接到实例 记住ENABLE SQL Server Browser服务。在我的时代已经设置了许多 SQL 服务器......但是这一步似乎总是涉及不同的场景:)【参考方案2】:

我得到了解决方案:

打开“SQL Server 配置管理器”

现在点击“SQL Server Network Configuration”并点击“Protocols for Name

右键单击“TCP/IP”(确保已启用)单击属性

现在选择“IP 地址”选项卡 - 并 - 转到最后一个条目“IP 全部”

输入“TCP 端口”1433。

现在重新启动“SQL Server .Name。”使用“services.msc”(winKey + r)

它会起作用的......

【讨论】:

在 SQL Server 2014 中使用 (localdb)\mssqllocaldb 而不是 (localdb)\v11.0 复制粘贴了我的comment(发布于 2015 年 2 月 24 日 - 您的帖子前 7 个月)作为答案,但没有给我积分! :P 这行得通。我无法连接到 SQL Server 2016。进行了这些更改并且成功了!谢谢。 它对我有用。在配置管理器中启用 TCP/IP 和命名管道后,只需在“service.msc”中启动服务。 像魔术一样工作!我正在使用 SQL Server 2017 顺便说一句.. 但仍然有效【参考方案3】:

添加我大力支持的comment 作为屏幕截图的答案。

我花了很多时间在这上面,最后对我有用的是:

1) 打开 Sql Server 配置管理器 --> SQL Server 网络配置 --> 的协议 -- > TCP/IP(双击它)。

2) 选择 --> IP 地址(选项卡)

3) 转到最后一个条目 IP All 并提及 TCP 端口 1433

4) 按Win+R并输入services.msc

5) 现在重新启动 SQL Server

之后,问题就解决了!

【讨论】:

Cannot connect to Remote SQL server 为我工作,SQL Express 2012 启用 TCP 后在 sql server 2012 中为我工作,将端口号 1433 添加到 TCP ALL,然后重新启动服务! 对我来说,我还必须在防火墙中允许 TCP 1433 UDP 1434 是的,设置端口号 1433 做到了,默认情况下似乎是空的【参考方案4】:

我通过打开 Services 然后开始运行 Sql Server (Sqlexpress) 服务来解决这个问题。

【讨论】:

我已经看到 SQL Server windows 服务设置为手动启动类型,所以它没有在重新启动时重新启动。它应该设置为自动。 这正是我所做的,我的状态是正在运行并且 StartupType 是自动的,但我仍然遇到了这个问题,所以我使用了运行窗口类型 services.msc 中的服务然后我右键单击 SQL Server(SQL EXPRESS) 用于上下文菜单,只需停止并再次启动服务,对我来说效果很好,希望有所帮助。【参考方案5】:

此错误主要出现在 SQL 服务停止时。您需要重新启动服务。要转到此窗口,您必须像这样搜索服务-

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

希望这会奏效。

【讨论】:

【参考方案6】:

如果您使用的是 Express Edition

在您的服务器名称后添加"\SQLEXPRESS"

例如"MY-SERVER\SQLEXPRESS"

【讨论】:

【参考方案7】:

window + R (Run window Open) 并在运行窗口中输入"services.msc" 并打开新服务,在我的例子中找到实例名称为SQL SERVER(SQLEXPRESS) 的SQL SERVER,然后启动此服务并再次尝试它对我有用,希望它也对你有用。

【讨论】:

之前已经给出了答案。不要有任何理由再次发布它 哥们也面临同样的问题,但我不知道热打开服务窗口然后我找到了一种方法,我想与人们分享 现在另一个人@Debendra copied 从您的回答中获得了比您更多的选票。 对此我能说什么。【参考方案8】:

当我想在另一台 PC 上运行我的 WinForms 项目(包括使用 SQL Server 数据库并且在我的 PC 上完美运行)时,我遇到了同样的错误。问题出在我电脑上的 Windows 防火墙中。我通过添加两个规则解决了这个问题。这是如何让 SQL Server 通过 Windows 防火墙的整个过程:

    打开“运行”并输入services.msc 查找 SQL Server(实例名称)和 SQL Server Browser 的服务。一次一个,右键,选择“属性”,复制exe文件路径 然后打开firewall.cpl,点击允许应用或添加规则,添加之前复制的路径(有一个过程需要遵循),勾选Domain and Private,取消勾选Public。

这是您可以看到此过程的 YouTube 链接:Allow SQL Server through Windows Firewall

【讨论】:

非常适合我。重要提示:在防火墙中添加浏览器和服务器! +1 我很难找到 sqlservr.exe 文件,这在找到它时起到了作用。【参考方案9】:

我遇到了同样的问题 就我而言,我以这种方式解决了问题

第 1 步:从开始菜单转到 SQL Server 配置管理器

第 2 步:启用 TCP/IP

第3步:双击TCP/IP并进入IP地址最后一项IP ALL并输入TCP端口1433然后应用

第 4 步:然后按 win+r 并写入 services.msc 打开服务然后向下滚动然后右键单击 SQL Server (MSSQLSERVER) 选择重新启动

这解决了我的问题。 即使执行上述所有步骤都不能解决问题,那么只需重新启动 PC,然后希望它会工作。

【讨论】:

这与上面的@ani627 相同的answer,大约在 4 年前的 2016 年 7 月 28 日回答。并赞成只是复制。 一年多前我遇到了同样的问题并以这种方式解决了它,我分享了这个。【参考方案10】:

此解决方案解决了 这两个问题Network Errorservice 在 SQL 服务器后面

我在这里回答了一个类似的问题,你需要统计另一个open Run type-> services.msc - 在服务下 -> sort by stopped 你会看到一堆停止的SQL服务Right click and start

首先 - 有 4 个问题可能会导致 常见 LocalDb SqlExpress Sql Server 连接错误 SQL Network Interfaces, error: 50 - Local Database Runtime error occurred,在您开始之前need to rename the v11 or v12 to (localdb)\mssqllocaldb


Troubleshooting Steps
    您没有services running run this cmd、net start MSSQLSERVERnet start MSSQL$ instancename 您没有firewall ports here 配置 您的安装存在问题/损坏(以下步骤有助于您从头开始) 你没有rename the V11 or 12 to mssqllocaldb/SqlServer

我发现最简单的方法是执行以下操作 - 我已附上图片和步骤以寻求帮助。


Resolution Steps:

首先验证您安装了哪个实例,您可以通过检查注册表 运行cmd

来做到这一点
    cmd> Sqllocaldb.exe i cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore" 如果此步骤失败,您可以使用选项d cmd> Sqllocaldb.exe d "someDb" 删除 cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb" cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"

重启MSSql Server 或直接重启你的机器!

按住/按下打开 CMD,window + R 并输入“services.msc”

现在寻找 sql server 服务,打开 find SQL SERVER with instance name 然后ReStart这个服务再试一次

【讨论】:

【参考方案11】:

如果上述解决方案都不起作用(对我没有任何作用),那么只需重新启动您的计算机,您就可以连接到您的 sql 服务器(本地主机)。

【讨论】:

之所以会这样,是因为您刚刚安装了Sql Server,并没有按照安装提示重新启动计算机。因此,执行此操作,然后将创建服务以及缺少的所有必要配置。 为什么这里的每个人都认为它是本地数据库????【参考方案12】:

完成这里提到的所有事情后: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/ 仍然没有为我工作。

对我有用的步骤:

Start > Run > cmd > sqlcmd -L

它会提示您服务器名称。确保此服务器名称与您在 SQL 管理工作室的 CONNECT TO SERVER 框中尝试连接的服务器名称相同。

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

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

谢谢。

【讨论】:

【参考方案13】:

您可以测试以下方法。

一个

    检查项目的连接字符串。

b

    转到服务并重新启动 SQLServer 实例。

c

    打开“SQLServer 配置管理器” 在左侧面板中选择“SQLServer 网络配置”并展开它 选择“MSSQLServer 协议” 在右侧面板中单击“TCP/IP” 在“协议”选项卡中,将“启用”设置为“是” 在“IP 地址”选项卡中向下滚动 在“IPAll”中将“TCP 端口”设置为 1433
d
    打开“具有高级安全性的防火墙” 在右侧选项卡中选择“入站规则”

在中间选项卡中找到'local Port'为1433的记录,如果找不到,请尝试使用以下级别创建它

在“开始”菜单中,单击“运行”,键入“WF.msc”,然后单击“确定” 在左侧面板中单击“具有高级安全性的 Windows 防火墙” 在右侧面板中右键单击“入站规则”,然后单击“新建规则” 在“规则类型”对话框中,选择“端口”,然后单击“下一步” 在“协议和端口”对话框中,选择“TCP”,然后选择“特定本地端口”,然后键入端口号 1433,单击“下一步” 在“操作”对话框中,选择“允许连接”,然后单击“下一步” 在“配置文件”对话框中,检查域、私有和公共,然后单击下一步 在“名称”对话框中,键入“SQL 1433 端口”,并为自己的描述编写描述。然后点击完成
    然后在中间选项卡中双击找到的项(实例)或您创建的“SQL 1433 端口”名称项。 在打开的对话框中选择“范围”选项卡(SQL Server 属性) 在本地 PC 在浏览器中转到 google.com 并搜索“我的 IP”。 然后复制您的“IP” 转到远程服务器并在“范围”选项卡的“SQL Server 属性”对话框中,在“远程 IP 地址”中选择“这些 IP 地址”选项并单击“添加”按钮 在打开的对话框(IP 地址)中选择“此 IP 地址或子网”选项并粘贴您的“IP”,单击“确定”按钮。

【讨论】:

【参考方案14】:

我使用的是 SQL Server 2016 和 Window 10。

首先是允许远程连接到 SQL Server。 我所做的是在开始菜单中键入 sqlservermanager13.msc 以打开 SQL Server 配置管理器。确保 TCP/IP 状态已启用。

双击 TCP/IP 协议名称检查您的 TCP 端口号。一般默认是1433。

以下过程使用具有高级安全性的 Windows 防火墙 Microsoft 管理控制台 (MMC) 管理单元来配置 Windows 防火墙。具有高级安全性的 Windows 防火墙仅配置当前配置文件。

在 Windows 防火墙中打开一个端口用于 TCP 访问

    在“开始”菜单上,单击“运行”,键入 WF.msc,然后单击“确定”。 在高级安全 Windows 防火墙的左窗格中,右键单击入站规则,然后单击操作窗格中的新建规则。 在“规则类型”对话框中,选择“端口”,然后单击“下一步”。 在“协议和端口”对话框中,选择 TCP。选择特定本地端口,然后键入实例的端口号 数据库引擎,例如默认实例的 1433。点击下一步。 在“操作”对话框中,选择“允许连接”,然后单击“下一步”。 在“配置文件”对话框中,选择任何描述您想要连接到计算机连接环境的配置文件 数据库引擎,然后单击下一步。 在“名称”对话框中,键入此规则的名称和说明,然后单击“完成”。

要配置的另一件事。

在使用动态端口时打开对 SQL Server 的访问

    在“开始”菜单上,单击“运行”,键入 WF.msc,然后单击“确定”。 在具有高级安全性的 Windows 防火墙的左窗格中, 右键单击入站规则,然后单击操作中的新建规则 窗格。 在“规则类型”对话框中,选择“程序”,然后单击“下一步”。 在“程序”对话框中,选择“此程序路径”。点击浏览, 并导航到您要访问的 SQL Server 实例 通过防火墙,然后单击打开。默认情况下,SQL Server 是 在 C:\Program Files\Microsoft SQL 服务器\MSSQL13.MSSQLSERVER\MSSQL\Binn\Sqlservr.exe。点击下一步。 在“操作”对话框中,选择“允许连接”,然后 点击下一步。 在“配置文件”对话框中,选择描述 当您要连接到计算机时的计算机连接环境 数据库引擎,然后单击下一步。 在“名称”对话框中,输入此规则的名称和说明, 然后点击完成。

查看 Microsoft 文档 Configure a Windows Firewall for Database Engine Access

【讨论】:

在我的 PC Windows 10 上,sql server 实例位于 C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\Binn\Sqlservr.exe【参考方案15】:

我必须在 SQL Server 配置管理器中运行 SQL Server Browser 服务。 没有这个,安装无法发现新创建的服务。

【讨论】:

我还不在那里,但我越来越近了。在 Visual Studio 中执行此操作后也断开连接并重新连接,仍然出现相同的错误,但现在至少从 VS2015 后面我无法创建表,我创建的数据库现在可以运行。 (嗯,上面没有黑色十字图标) 在你的命令之后注意,这会导致本地机器上的服务器名称开始>运行> cmd> sqlcmd -L【参考方案16】:

我遇到了同样的问题,问题是我在解决方案中有几个项目(WebDroid),即使在Package Manager Console 中选择了Default project,它也使用了来自Droid项目:

PM> update-database -Verbose
Using StartUp project 'Droid'. <-- DROID
Using NuGet project 'Web'. <-- WEB
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
<!-- BAD TARGET DATABASE -->
Target database is: 'DefaultConnection' (DataSource: .\SQLEXPRESS, Provider: System.Data.SqlClient, Origin: Convention).
System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
   [REMOVED TEXT]
ClientConnectionId:00000000-0000-0000-0000-000000000000
Error Number:-1,State:0,Class:20
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

在将Startup Project 设置为WebPackage Manger Console 中的Default Project 之后,我让它工作了。

【讨论】:

【参考方案17】:

您可以检查 MS SQL Server 2014 的服务状态。在 Windows 7 中,您可以通过以下方式进行:

    转到搜索并键入“SQL Server 2014 配置管理器” 然后点击左侧菜单中的“SQL Server服务” 检查 SQL Server 服务实例是否已停止或正在运行 如果已停止,请将状态更改为正在运行并登录 SQL Server Management Studio 2014

【讨论】:

【参考方案18】:

虽然上述解决方案应该适用于 90% 的情况,但如果您仍在阅读此答案!!!您可能正在尝试连接到与预期不同的服务器。这可能是由于配置文件指向的 SQL 服务器与您认为您尝试连接的实际服务器不同。

至少发生在我身上。

【讨论】:

也发生在我身上。在检查尝试诊断防火墙之前应该检查一下。我有正确的连接字符串,但我在解决方案中运行了错误的项目...【参考方案19】:

当我在 Visual Studio 中遇到此错误时,

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

...在执行以下 C# 代码期间,它试图获取我的 SQL Server 数据以将其显示在网格中。中断恰好发生在 connect.Open() 的行上:

        using (var connect = Connections.mysqlConnection)
        
            const string query = "SELECT Name, Birthdate, Narrative FROM Friends";
            using (var command = new SqlCommand(query, connect))
            
                connect.Open();
                using (var dr = command.ExecuteReader())
                
                    while (dr.Read())
                    
                        // blah
                    
                
            
        

莫名其妙,因为 SQL 查询很简单,我有正确的连接字符串,并且数据库服务器可用。我决定自己在 SQL Management Studio 中手动运行实际的 SQL 查询,它运行得很好并产生了几条记录。但是在查询结果中有一点很突出:Friends 表中的 varchar(max) 类型字段中有一些编码不正确的 html 文本(具体来说,一些编码的注释符号 &lt;!-- 存在于“叙述”列的数据中)。可疑数据行如下所示:

Name    Birthdate    Narrative
====    =========    ============== 
Fred    21-Oct-79    &lt;!--HTML Comment -->Once upon a time...

请注意编码的 HTML 符号“&amp;lt;”,它代表“

Name    Birthdate    Narrative
====    =========    ============== 
Fred    21-Oct-79    <!--HTML Comment -->Once upon a time...

我使用下面这个简单的 UPDATE 语句编辑了我遇到的一个错误行。但是,如果您有几行有问题的编码 HTML,您可能需要使用 REPLACE 函数的更精细的 UPDATE 语句:

UPDATE Friends SET Narrative = '<!--HTML Comment -->Once upon a time...' WHERE Narrative LIKE '&lt%'

因此,故事的寓意是(至少在我的情况下),在将 HTML 内容存储到数据库之前对其进行清理,这样一开始就不会出现这个神秘的 SQL Server 错误! (嗯,正确清理/解码您的 HTML 内容是另一个讨论的主题,如果您需要更多信息,值得单独进行 *** 搜索!)

【讨论】:

这很棒而且很有帮助。【参考方案20】:

为什么这个错误如此令人厌烦和嘈杂,只是因为它可以在不同的情况下发生。

我已经完成了上面所有的方法,但仍然被吸引。所以在向下浏览之前,请确保你已经和我一样做了。

也许我无法立即解决你的情况,但我可以为你指出一个方向或想法(最终滑落到这里的那个人)。在确定实例名称明确正确并按照上述方法设置我的数据库以允许远程控制之后,我开始思考我正在运行的程序发生的错误。之后,我怀疑我的 SQL 连接的代码 sn-p 发生了问题。

我的问题的解决方案:

检查我的sqlconnection函数

点击查看其配置

新建连接

选择您的服务器名称

思考连接过程中到底发生了什么对我很有用。希望我的想法能引导你消除你的错误。

【讨论】:

这帮助我发现在使用实体框架时我需要删除 LocalDB 连接字符串的端口号。【参考方案21】:

尝试将, 和端口号(如,1433)添加到连接字符串的末尾。

【讨论】:

【参考方案22】:

我尝试了关于这个问题的所有其他答案,如果不是全部的话,有些答案可能在让这个为我工作的过程中发挥了作用,但我仍然无法远程连接到数据库。我在 Azure VM 上使用 SQL Server。

我最终记得 VM 具有由 Azure 帐户代理控制的端点,因此我继续访问 Azure 门户并添加 1433 作为可用端点,我可以连接到我的 SQL 实例。

希望这对尝试了所有其他答案但仍然没有运气的人有所帮助!

【讨论】:

【参考方案23】:

总结

要解决运行本地应用程序与远程数据库时遇到的这个问题,请使用 SQL Server 配置管理器为远程数据库添加别名。

详情

我最近在从 Windows 7 转换到 Windows 10 笔记本电脑时遇到了这个问题。我正在运行本地开发和运行时环境,访问远程服务器上的开发数据库。我们通过 SQL Server 客户端网络实用程序 (cliconfg.exe) 的服务器别名设置访问 Dev 数据库。在确认在 64 位和 32 位版本的实用程序中正确设置了别名并且可以通过 SSMS 从新笔记本电脑访问数据库服务器后,我仍然收到 OP 看到的错误(不是 OP 的 IP 地址,当然)。

必须使用 SQL Server 配置管理器为远程开发数据库服务器添加别名。马上解决问题。

【讨论】:

【参考方案24】:

只需重新启动 SQL Server (MSSQLSERVER) 服务。

【讨论】:

超过 4 人给出了相同的答案,有些人甚至在你的答案之前有截图。【参考方案25】:

我从使用 Windows 7 的工作笔记本电脑转移到了使用 Windows 10 的工作笔记本电脑。 我已经在 Windows 7 上成功使用了 SSMS2016。

使用 SSMS2012 或 SSMS2016 应用了相同的问题。 我使用 Windows 身份验证对 10 个 SQL 服务器的访问仍然相同。我可以从另一台服务器测试这个。 但是,10 台服务器中有 2 台无法从我的笔记本电脑连接。 两者都是 ms SQL server 9,但我可以连接到另一个 SQL server 9 数据库。

解决方案是添加防火墙规则(使用具有高级安全性的 Windows 防火墙)。

为每个 SSMS 创建传入规则 例如 C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Ssms.exe

我不是网络专家,所以我没有提供详细信息,但希望它能为您指明正确的方向。


错误消息(防火墙前规则) “在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问该服务器。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者: SQL 网络接口,错误:26 - 定位服务器/指定实例时出错)(.Net SqlClient 数据提供程序)"

【讨论】:

【参考方案26】:

如果您在 Visual Studio 中调试时遇到此问题,请确保项目构建路径指向本地驱动器,或按照 these steps 授予对网络文件夹的权限。

【讨论】:

【参考方案27】:

当我尝试将服务器从 IIS Express 更改为 Local IIS(使用 LocalDB 时)时,我的问题就开始了。

我使用的是 LocalDB(用于开发目的),当我从本地 IIS 恢复到 IIS Express 时,Visual Studio 已将我的数据源从 Data Source=(LocalDb)\MSSQLLocalDB em>Data Source=.\SQLEXPRESS

连接字符串不正确

<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\SurveyTestsDB.mdf;Initial Catalog=SurveyTestsDB;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />

正确的连接字符串

&lt;add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\SurveyTestsDB.mdf;Initial Catalog=SurveyTestsDB;Integrated Security=True" providerName="System.Data.SqlClient" /&gt;

希望这对那里的人有所帮助。

【讨论】:

也不要犯在连接字符串中使用 / 而不是 \ 的愚蠢错误。【参考方案28】:

除了按照 Teo Chuen Wei Bryan 的建议尝试一切之外,请确保您还在连接字符串中引用了正确的服务器/实例名称。

如果您在数据库服务器或 web.config 文件中使用主机名/实例的缩写形式,请确保使用完全限定域名(FQDN)/实例

此外,要测试来自不存在 SQL Server 客户端的服务器的连接性,

--> 创建一个文本文件并将其文件扩展名更改为.udl

--> 右键单击​​该文件,您可以看到连接选项卡。

--> 输入服务器名称和登录信息以测试与数据库服务器的连接。

希望这会有所帮助。

【讨论】:

【参考方案29】:

如果您在生产环境中突然遇到此错误并且没有任何变化,请按以下顺序尝试以下 4 项,看看是否得到修复。

    重启sql server服务。 重新启动调用 sql server 的服务(比如 IIS)。 (如果从开始对 SQL Server 的服务调用到您最终收到响应错误的时间非常短(大约一到两秒),问题可能就在这里。 重启服务器 sql server 已开启。 重启调用服务所在的服务器。

【讨论】:

【参考方案30】:

Web.config 中的 XML 标签排列很重要

第一

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>

之后

<connectionStrings>
  <add name="SqlConnectionString" connectionString="Data Source=.; Initial Catalog=TestDB; Trusted_Connection=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

【讨论】:

以上是关于无法连接到服务器 - 与网络相关或特定于实例的错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试连接到MySQL服务器:建立与SQL Server的连接时发生与网络相关或特定于实例的错误

在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名

sql server 2008 在与 SQL Server 提示建立连接时出现与网络相关的或特定于实例的错误

疑难解答'建立与SQL Server的连接时发生的与网络相关或特定于实例的错误'连接到Azure SQL Server

管道错误40建立与SQL Server的连接时发生与网络相关或特定于实例的错误

与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。