ChatGPT解决这个技术问题 Extra ChatGPT

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

尝试连接到 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 时收到此错误,请在此处查看我的屏幕截图答案。我回到 StackOverflow 并再次使用了我的答案,因为它是唯一有效的答案。 stackoverflow.com/questions/1391503/…
当我想连接到本地主机时,我的虚拟服务器上出现了这个问题。启动操作系统时似乎出现了某种错误——在我的情况下,一切都幸运地通过干净的重启解决了。
我有同样的错误。就我而言,我没有正确拼写服务器的名称。有时是简单的事情。

B
Bryan

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

确保您的数据库引擎配置为接受远程连接:开始 > 所有程序 > SQL Server 2005 > 配置工具 > SQL Server 外围应用配置 单击服务和连接的外围应用配置 选择有问题的实例 > 数据库引擎 >远程连接 启用本地和远程连接 重新启动实例 您可能需要在防火墙上为您正在使用的 SQL Server 实例和端口创建一个例外:开始 > 运行 > Firewall.cpl 单击例外选项卡 添加 sqlservr.exe(通常位于 C :\Program Files (x86)\Microsoft SQL Server\MSSQL.x\MSSQL\Bin,检查您安装的实际文件夹路径)和端口(默认为 1433)检查您的连接字符串以及来自 FIX:错误:无法打开与 SQL Server 的连接:检查您的 SQL Server 服务是否启动并正常运行:转到所有程序 > Microsoft SQL Server 2008 > 配置工具 > SQL Server 配置管理器 > SQL Server Services Che ck 以确保 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 时的解决方案。
今天我花了很多时间,最后对我有用的是:打开 Sql Server 配置管理器 --> 的协议 --> TCP/IP --> IP 地址(选项卡)。转到最后一个条目 IP All 并提及 TCP 端口 1433。现在使用 services.msc 重新启动 SQL Server ()。之后,问题就解决了!
我在本地Sql服务器上也遇到了特殊问题,通过检查操作系统的本地服务并搜索特定的Sql服务并一一启动它们来解决。它工作完美。
我也有同样的问题,登录sql server发现mssqlserer服务停止了,启动了。现在能够连接到实例
记住ENABLE SQL Server Browser服务。在我的时代已经设置了许多 SQL 服务器......但是这一步似乎总是涉及不同的场景:)
I
Irshad Khan

我得到了解决方案:

打开“SQL Server 配置管理器”现在单击“SQL Server 网络配置”并单击“名称协议”右键单击“TCP/IP”(确保已启用)单击属性现在选择“IP 地址”选项卡 -和- 转到最后一个条目“IP All”输入“TCP Port”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 btw .. 但仍然有效
C
Community

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

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

1) 打开 Sql Server 配置管理器 --> SQL Server 网络配置 --> Protocols for <(INSTANCE)> --> TCP/IP(双击它)。

https://i.stack.imgur.com/OjBkv.jpg

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

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

https://i.stack.imgur.com/BjcbS.jpg

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

5) 现在重新启动 SQL Server <(INSTANCE)>。

https://i.stack.imgur.com/dWKvN.jpg

之后,问题就解决了!


为我工作,SQL Express 2012
启用 TCP 后在 sql server 2012 中为我工作,将端口号 1433 添加到 TCP ALL,然后重新启动服务!
对我来说,我还必须在防火墙中允许 TCP 1433 和 UDP 1434
是的,设置端口号 1433 做到了,默认情况下似乎是空的
A
Anik Saha

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

https://i.stack.imgur.com/FG8ut.png


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

https://i.stack.imgur.com/w459i.jpg

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

https://i.stack.imgur.com/9slrL.jpg

希望这会奏效。


A
Abdulrahman Bres

如果您使用的是 Express Edition:

您需要在服务器名称后添加 \SQLEXPRESS

例如MY-SERVER\SQLEXPRESS

https://i.stack.imgur.com/JzDyc.png


M
Muhammad Asad

https://i.stack.imgur.com/pi6l8.jpg


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

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

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

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


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

我遇到了同样的问题在我的情况下,我以这种方式解决了问题

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

第 2 步:启用 TCP/IP

https://i.stack.imgur.com/ifjrG.png

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

https://i.stack.imgur.com/ierMy.png

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

https://i.stack.imgur.com/0p2CF.png

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


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

此解决方案解决了 SQL 服务器背后的网络错误和服务这两个问题

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

首先 - 有 4 个问题可能会导致 common 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

您没有运行此 cmd 的服务,net start MSSQLSERVER 或 net start MSSQL$ instancename 您没有在此处配置防火墙端口 您的安装有问题/损坏(以下步骤帮助您顺利开始)不将 V11 或 12 重命名为 mssqllocaldb/SqlServer

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

Resolution Steps:

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

cmd> Sqllocaldb.exe i cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore" 如果这一步失败,可以用 option d 删除 cmd> Sqllocaldb.exe d "someDb" cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb" cmd> Sqllocaldb.exe start “createSomeNewDbIfyouWantDb”

重新启动 MSSql Server 或只需重新启动您的机器!

按住/按下打开 CMD,窗口 + R 并键入“services.msc”

现在寻找 sql server 服务,打开 find SQL SERVER with instance name 然后重新启动此服务并重试

https://i.stack.imgur.com/91QbZ.png


E
Eugen Sunic

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


这会起作用的原因是因为您刚刚安装了 Sql Server 并且没有按照安装告诉您的那样重新启动计算机。因此,这样做,然后将创建服务以及缺少的所有必要配置。
为什么这里的每个人都假设它是本地数据库????
D
Denn

完成此处提到的所有操作后:
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 而不是使用此服务器名称。

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

谢谢。


F
Fred Lai

我正在使用 SQL Server 2016 和 Window 10。

https://i.stack.imgur.com/TDWxw.png

https://i.stack.imgur.com/ueV68.png

通过双击 TCP/IP 协议名称检查您的 TCP 端口号。通常默认为 1433。

https://i.stack.imgur.com/0uDM5.png

以下过程使用具有高级安全性的 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 Server\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
M
MohammadSoori

您可以测试以下方法。

a 检查项目的连接字符串。 b 转到服务并重新启动 SQLServer 实例。 c 打开“SQLServer 配置管理器”在左侧面板中选择“SQLServer 网络配置”并展开它选择“MSSQLServer 的协议”在右侧面板中单击“TCP/IP”在“协议”选项卡中将“启用”设置为“是” 在“IP 地址”选项卡中向下滚动 在“IPAll”中将“TCP 端口”设置为 1433 d 打开“高级安全防火墙”在右侧选项卡中选择“入站规则”

在中间选项卡中找到“本地端口”为 1433 的记录,如果找不到,请尝试使用以下级别创建它

在“开始”菜单中,单击“运行”,键入“WF.msc”,然后单击“确定”

在左侧面板中单击“具有高级安全性的 Windows 防火墙”

在右侧面板中右键单击“入站规则”,然后单击“新建规则”

在规则类型对话框中,选择“端口”,然后单击下一步

在“协议和端口”对话框中,选择“TCP”,然后选择“特定本地端口”,然后键入端口号 1433,单击“下一步”

在“操作”对话框中,选择“允许连接”,然后单击“下一步”

在“配置文件”对话框中,检查域、私有和公共,然后单击下一步

在“名称”对话框中,键入“SQL 1433 端口”,并为自己的描述编写描述。然后点击完成

然后在中间选项卡中双击找到的项目(实例)或您创建的“SQL 1433 端口”名称的项目。在打开的对话框中选择“范围”选项卡(SQL Server 属性) 在本地 PC 中转到浏览器中的 google.com 并搜索“我的 IP”。然后复制您的“IP”转到远程服务器并在“范围”选项卡的“SQL Server 属性”对话框中,在“远程 IP 地址”中选择“这些 IP 地址”选项并单击“添加”按钮打开的对话框(IP 地址)选择“此 IP 地址或子网”选项并粘贴您的“IP”,单击“确定”按钮。


M
MarkosyanArtur

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


我还没到那里,但我越来越近了。在 Visual Studio 中执行此操作后也断开并重新连接,仍然出现相同的错误,但现在至少从 VS2015 后面我无法创建表,并且我创建的数据库现在可以运行。 (ea,上面没有黑色十字图标)
在您的命令之后注意,这导致本地计算机上的服务器名称 Start > Run > cmd > sqlcmd -L
W
Westerlund.io

我遇到了同样的问题,问题是我在解决方案中有几个项目(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 后,我让它工作了。


C
Can

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

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


D
Devca

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


超过 4 人给出了相同的答案,有些人甚至在你的答案之前有截图。
A
Arjmand

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

至少发生在我身上。


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

当我在 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 文本(具体来说,“叙述”列的数据中存在一些 <!-- 类型的编码注释符号)。可疑数据行如下所示:

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

请注意编码的 HTML 符号“&lt;”,它代表“<”特点。不知何故,它进入了数据库,我的 C# 代码无法识别它!它每次都在 connect.Open() 行失败!在我手动编辑数据库表 Friends 中的那一行数据并放入解码后的“<”之后相反,一切正常!该行应该是这样的:

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 内容是另一个讨论的主题,如果您需要更多信息,值得单独进行 StackOverflow 搜索!)


这很棒而且很有帮助。
C
Community

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

我已经完成了上面的所有方法,但仍然被吸引。因此,在向下浏览之前,请确保您已经完成了与我相同的操作。

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

我的问题的解决方案:

检查我的 sqlconnection 函数

https://i.stack.imgur.com/MVImk.png

点击查看其配置

https://i.stack.imgur.com/M2Qzs.png

新建连接

https://i.stack.imgur.com/YvFDl.png

选择您的服务器名称

https://i.stack.imgur.com/ySi96.png

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


这帮助我发现在使用实体框架时我需要删除 LocalDB 连接字符串的端口号。
P
Patrick

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


J
John

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

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

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


B
Bill Needels

概括

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

细节

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

必须使用 SQL Server 配置管理器为远程 Dev 数据库服务器添加别名。把事情搞定了。

https://i.stack.imgur.com/NKK3t.png


i
islam nabil

我从 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 数据提供者)


K
Kevin D.

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


m
megamaiku

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

https://i.stack.imgur.com/eoUBW.png

我正在使用 LocalDB(用于开发目的),当我从本地 IIS 恢复到 IIS Express 时,Visual Studio 已将我的数据源从 Data Source=(LocalDb)\MSSQLLocalDB 切换到 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" />

正确的连接字符串

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

希望这可以帮助那里的人。


也不要犯在连接字符串中使用 / 而不是 \ 的愚蠢错误。
S
SanthoshM

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

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

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

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

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

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

希望这可以帮助。


B
Barka

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

重启sql server服务。重新启动调用 sql server 的服务(比如 IIS)。 (如果开始对 SQL Server 的服务调用和最终收到响应错误之间的时间非常短(大约一两秒),则问题可能出在此处。重新启动服务器 sql server 已打开。重新启动服务器调用服务正在打开。


C
Can

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>