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

Cannot Connect to Server - A network-related or instance-specific error

提问人:Sasa Shree 提问时间:8/5/2013 最后编辑:OldBuildingAndLoanSasa Shree 更新时间:11/15/2023 访问量:2366843

问:

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

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

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

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

sql-server visual-studio 数据库连接

评论

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

答:

340赞 Bryan 8/5/2013 #1

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

  1. 确保数据库引擎配置为接受远程连接

    • 启动> SQL Server 2005 >配置器工具>所有程序 > SQL Server 外围应用配置
    • 单击“服务和连接的外围应用配置器”
    • 选择>数据库引擎>远程连接出现问题的实例
    • 启用本地和远程连接
    • 重启实例
  2. 您可能需要在防火墙上为正在使用的 SQL Server 实例和端口创建例外

    • 启动>运行 > 防火墙.cpl
    • 单击“例外”选项卡
    • 添加 sqlservr.exe(通常位于 中,检查安装的实际文件夹路径)和端口(默认值为C:\Program Files (x86)\Microsoft SQL Server\MSSQL.x\MSSQL\Bin1433)
    • 还要检查连接字符串
  3. 检查 SQL Server 服务是否已正常启动并运行

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

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

  4. 在 SQL Server 配置中启用 TCP/IP

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

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

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

评论

14赞 Mike Richards 10/21/2014
在使用 SQL Server 2014 Express 时,在 SQL Server 配置中启用 TCP/IP 是我的解决方案。
120赞 ani627 2/24/2015
今天我花了很多时间在这上面,最后对我有用的是:打开 Sql Server 配置管理器 --> <INSTANCE> 的协议 --> TCP/IP --> IP 地址(选项卡)。转到最后一个条目 IP All 并提及 TCP 端口 1433。现在,使用 services.msc 重新启动 SQL Server (<INSTANCE>)。在此之后,问题得到了解决!
1赞 Faisal Naseer 3/10/2015
我也在本地 Sql 服务器上遇到了特定问题,并通过检查操作系统的本地服务并搜索特定的 Sql 服务并逐一启动它们来解决。它工作得很完美。
4赞 Rak 4/4/2015
我也遇到了同样的问题,登录到sql服务器发现mssqlserer服务已停止,启动了它。现在能够连接到实例
21赞 mschr 10/14/2016
还要记得服务。在我的时间里设置了许多 SQL 服务器......然而,这一步似乎总是涉及不同的场景:)ENABLE SQL Server Browser
179赞 Irshad Khan #2

我得到了解决方案:

打开“SQL Server 配置管理器”

现在单击“SQL Server 网络配置”,然后单击“协议名称"

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

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

输入“TCP 端口”1433。

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

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

评论

4赞 Shalva Avanashvili 5/26/2016
在 SQL Server 2014 中,使用 (localdb)\mssqllocaldb 而不是 (localdb)\v11.0
121赞 ani627 7/28/2016
复制粘贴我的评论(发布于 2015 年 2 月 24 日 - 在您发布前 7 个月)作为答案,没有给我信用!:P
2赞 Ankur 8/28/2017
这奏效了。我无法连接到 SQL Server 2016。进行了这些更改,它奏效了!谢谢。
2赞 Alif Noushad 12/12/2017
它对我有用。在配置管理器中启用 TCP/IP 和命名管道后,只需在“service.msc”中启动服务。
1赞 danielpr 3/19/2021
像魔术一样工作!顺便说一句,我正在使用 SQL Server 2017。但仍然有效
10赞 EugenSunic 10/8/2015 #3

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

评论

0赞 Sterling Diaz 4/30/2016
这样做的原因,是因为你刚刚安装了Sql Server,并且没有按照安装告诉你的方式重新启动计算机。因此,这样做,然后将创建服务并缺少所有必要的配置。
2赞 Hobbamok 1/14/2021
为什么这里的每个人都认为它是一个本地数据库????
6赞 MarkosyanArtur 1/27/2016 #4

我必须将 SQL Server Browser 服务运行到 SQL Server 配置管理器中。 如果没有此功能,安装将无法发现新创建的服务。

评论

1赞 Peter 10/13/2016
我还没到那儿,但我越来越近了。在Visual Studio中,执行此操作后,还可以断开连接并重新连接,仍然出现相同的错误,但现在至少从VS2015后面我无法创建表,并且我创建的数据库现在运行。(EA,上面没有深色十字图标)
2赞 Peter 10/13/2016
注意:在命令后,这会导致本地计算机上的服务器名称 启动>运行 > cmd > sqlcmd -L
103赞 Anik Saha 2/17/2016 #5

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

服务图像

评论

3赞 robertburke 10/8/2016
我已经看到SQL Server Windows服务被设置为手动启动类型,因此它在重新启动时没有重新启动。它应设置为“自动”。
2赞 Shaiju T 10/25/2016
这正是我所做的,我的状态是正在运行,StartupType 是自动的,但我仍然遇到了这个问题,所以我使用了运行窗口类型的服务,然后我右键单击 SQL Server (SQL EXPRESS) 作为上下文菜单,然后再次停止和启动服务,对我来说效果很好,希望有帮助。services.msc
17赞 NutCracker 2/28/2016 #6

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

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

这是 YouTube 链接,您可以在其中看到此过程:允许 SQL Server 通过 Windows 防火墙

评论

0赞 BendEg 3/9/2016
对我来说效果很好。重要提示:在防火墙中添加浏览器和服务器!+1
0赞 Stan 5/25/2017
我很难找到 sqlservr.exe 文件,这确实找到了它。
9赞 Denn 2/28/2016 #7

在完成这里提到的所有事情之后:
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 Management Studio 的“连接到服务器”框中尝试连接到的服务器名称相同。

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

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

谢谢。

17赞 Muhammad Asad 4/2/2016 #8

按并在运行窗口中键入并打开新服务,在我的情况下找到带有实例名称的SQL SERVER,然后启动此服务并重试,它对我有用,希望它也适合您。window + R (Run window Open)"services.msc"SQL SERVER(SQLEXPRESS)enter image description here

评论

2赞 Anik Saha 4/11/2016
答案是之前提供的。不要再有任何理由发布它
10赞 Muhammad Asad 4/11/2016
哥们面临同样的问题,但我不知道热打开服务窗口,然后我找到了一种方法,我想与人分享
0赞 Dush 9/30/2021
现在,另一个人@Debendra从你的答案中复制而来,得到的票数比你多。
0赞 Muhammad Asad 9/30/2021
我能说什么呢。
2赞 user786 4/16/2016 #9

当您的 sql server 实例为 .stopped

转到所有程序>SQL Server >配置工具>SQL SERVER 配置管理器

然后单击SQL sERVER SERVICES,将出现实例列表,选择有问题的实例,然后单击顶部工具栏上的播放图标,希望这会有所帮助。

这个答案很晚(但迟到总比没有好;

4赞 Arjmand 4/28/2016 #10

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

至少发生在我身上。

评论

1赞 VSO 8/8/2016
也发生在我身上。在检查尝试诊断防火墙之前,应该检查一下。我有正确的连接字符串,但我在解决方案中运行了错误的项目......
6赞 John 5/26/2016 #11

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

我最终想起 VM 具有由 Azure 帐户代理控制的终结点,因此我转到 Azure 门户并将 1433 添加为可用终结点,以便我可以连接到我的 SQL 实例。

希望这可以帮助那些已经尝试了所有其他答案但仍然没有运气的人!

179赞 ani627 7/28/2016 #12

添加我被大量点赞的评论作为屏幕截图的答案。

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

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

enter image description here

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

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

enter image description here

  1. 按并输入 services.mscWin+R

  2. 现在重新启动 SQL Server <(INSTANCE)>

enter image description here

在此之后,问题得到了解决!

评论

0赞 ani627 3/21/2017
无法连接到远程 SQL Server
0赞 lost_in_magento 4/1/2018
为我工作,SQL Express 2012
1赞 Chirag Khatsuriya 3/8/2019
启用TCP后,在sql server 2012中为我工作,将端口号1433添加到TCP ALL,然后重新启动服务!
0赞 MarkusEgle 7/2/2019
对我来说,我必须在防火墙中允许 TCP 1433 UDP 1434
2赞 WtFudgE 12/17/2020
是的,设置端口号 1433 做到了,似乎默认情况下只是空的
20赞 Abdulrahman Bres 9/26/2016 #13

如果您使用的是 Express Edition

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

例如MY-SERVER\SQLEXPRESS

enter image description here

评论

1赞 Maxim Yarmolik 4/5/2023
我在使用 \\ 而不是 \ 时遇到了一个问题。出于某种原因,我的一个应用程序有效,而另一个则无效。尽管第二个是第一个的精简版。
5赞 Westerlund.io 10/16/2016 #14

我遇到了同样的问题,问题是我在解决方案(和)中选择了几个项目,即使选择了它,它也使用了项目中的连接字符串:WebDroidDefault projectPackage Manager ConsoleDroid

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)

设置 to 和 in 后,我让它开始工作了。Startup ProjectWebDefault ProjectPackage Manger Console

2赞 user1796440 10/23/2016 #15

我通过将使用Entity Framework的项目设置为启动项目,然后运行“update-database”命令来解决此问题。

10赞 Fred Lai 11/11/2016 #16

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

enter image description here

第一件事是允许远程连接到 SQL Server。 我所做的是在开始菜单中键入sqlservermanager13.msc,以便打开SQL Server配置管理器。确保 TCP/IP 状态已启用。enter image description here

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

enter image description here

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

在 Windows 防火墙中打开端口以进行 TCP 访问

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

要配置的另一件事。

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

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

看一看 Microsoft doucmentation 为数据库引擎访问配置 Windows 防火墙

评论

0赞 Mayer Spitz 4/24/2019
在我的 PC Windows 10 上,sql server 实例位于 C:\Program Files\Microsoft SQL Server\MSSQL13。SQLEXPRESS\MSSQL\Binn\Sqlservr.exe
0赞 Jamie 11/15/2022
有许多方法可以阻止访问 SQL Server。SQL浏览器应该绕过它,但将其关闭,然后检查上面列出的内容,将问题缩小到登录权限,通过防火墙的TCP端口访问,并假设允许远程连接。远程连接是默认的,因此两个主要问题是端口访问(如 192.168.1.2,60122),其中实例的端口为 60122,以及防火墙规则。谢谢弗雷德。
3赞 Kevin D. 11/16/2016 #17

如果在 Visual Studio 中调试时遇到这种情况,请确保项目生成路径指向本地驱动器,或按照以下步骤授予对网络文件夹的权限。

4赞 JohnC 1/17/2017 #18

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

使用SSMS2012或SSMS2016应用了相同的问题。 我对使用 Windows 身份验证的 10 个 SQL Server 的访问仍然相同。我可以从另一台服务器测试它。 但是,10 台服务器中有 2 台无法从我的笔记本电脑连接。 两者都是 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 数据提供程序)”

1赞 Ondrej 2/9/2017 #19

您的 localdb 实例似乎没有运行。 要在计算机启动时启动它,请使用以下行添加到“开始”菜单\“启动文件夹BAT文件中

sqllocaldb start name_of_instance

其中 是要启动的 localdb 实例的名称。 您可以使用 在命令行中列出可用实例。name_of_instancesqllocaldb i

例如,如果您使用的是 SQL Server Management Studio 并连接到服务器名称,则您的 BAT 文件将如下所示(localdb)\v11.0

sqllocaldb start v11.0
4赞 megamaiku 2/21/2017 #20

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

enter image description here

我正在使用 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" />

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

评论

0赞 andrew pate 3/9/2017
也不要犯在连接字符串中使用 / 而不是 \ 的愚蠢错误。
1赞 Thing 3/1/2017 #21

我的问题是,您需要在存储库层和 Web 层中都有一个连接字符串条目。将它添加到我的 web.config app.config 后,Entity Framework 就能够创建迁移。

我的问题是,当那里绝对没有数据库访问权限时,为什么 web.config 需要它。

14赞 Transformer 3/1/2017 #22

此解决方案解决了SQL Server背后的问题Network Errorservice

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

首先 - 有 4 个问题可能导致常见的 LocalDb SqlExpress Sql Server 连接错误,在开始之前,您需要将 v11 或 v12 重命名为 (localdb)\mssqllocaldbSQL Network Interfaces, error: 50 - Local Database Runtime error occurred


Troubleshooting Steps
  1. 您没有运行运行此 cmd 的服务,或者net start MSSQLSERVERnet start MSSQL$ instancename
  2. 您没有在此处配置防火墙端口enter image description here
  3. 您的安装有问题/损坏(以下步骤有助于为您提供一个干净的开始)
  4. 您没有将 V11 或 12 重命名为 mssqllocaldb/SqlServer

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


Resolution Steps:

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

  1. cmd> Sqllocaldb.exe i
  2. cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore"如果此步骤失败,可以使用选项 cmd> Sqllocaldb.exe d “someDb” 删除d
  3. cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
  4. cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"

重新启动或直接重新启动计算机!MSSql Server

  • 按住/按下打开 CMD,然后键入“services.msc”window + R

  • 现在查找 sql server 服务,打开查找具有实例名称的 SQL SERVER 然后此服务并重试ReStart

SqlLOCALDb_edited.png

3赞 SanthoshM 3/16/2017 #23

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

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

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

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

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

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

希望这会有所帮助。

8赞 MohammadSoori 3/30/2017 #24

您可以测试以下方法。

  • 一个

    1. 检查项目的连接字符串。
  • b

    1. 转到“服务”并重新启动 SQLServer 实例。
  • c

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

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

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

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

  1. 重新启动 SQL Server 服务。
  2. 重新启动正在调用 SQL Server 的服务(例如 IIS)。(如果开始对 SQL Server 的服务调用与最终获得响应错误之间的时间非常短(大约一到两秒),则问题可能出在这里。
  3. 重新启动服务器 SQL Server 已打开。
  4. 重新启动呼叫服务所在的服务器。
4赞 ShieldOfSalvation 5/23/2017 #26

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

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

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

        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 文本(具体来说,是一些编码的注释符号,这些符号位于 “Narrative” 列的数据中)。可疑数据行如下所示:<!--

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

请注意编码的 HTML 符号 “”,它代表“<”字符。不知何故,它进入了数据库,我的 C# 代码无法拾取它!每次连接时都失败了。Open() 行!在我手动编辑数据库表 Friends 中的那一行数据并输入解码的“<”字符后,一切都正常了!下面是该行的样子:&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 内容是另一个讨论的主题,值得单独搜索 StackOverflow!

评论

0赞 Dush 9/30/2021
这很棒,非常有帮助。
5赞 Chamara 7/16/2017 #27

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

  1. 转到搜索并键入“SQL Server 2014 配置管理器”
  2. 然后单击左侧菜单上的“SQL Server 服务”
  3. 检查 SQL Server 服务实例的状态(如果已停止或正在运行)
  4. 如果已停止,请将状态更改为“正在运行”并登录到 SQL Server Management Studio 2014
4赞 Bill Needels 11/2/2017 #28

总结

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

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

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

enter image description here

31赞 Debendra Dash 11/9/2017 #29

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

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

enter image description here

希望这会起作用。

4赞 Chase07 11/14/2017 #30

为什么这个错误如此无聊和嘈杂,只是因为它可能发生在各种情况下。

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

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

我的问题的解决方案:

  • 检查我的sqlconnection函数

  • 点击查看其配置

  • 新建连接

enter image description here

  • 选择服务器名称

enter image description here

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

评论

0赞 ryanwebjackson 6/27/2018
这帮助我发现,在使用实体框架时,我需要删除 LocalDB 连接字符串的端口号。
3赞 pejman 12/25/2017 #31

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>
4赞 Kalyan Hurkat 6/7/2018 #32

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

0赞 Crowcoder 5/20/2019 #33

它也可以像您的数据库实际上不是 MS SQL Server 一样简单。例如,如果你的数据库实际上是 MySql,并且你尝试使用 System.Data.SqlClient 连接到它,则会出现此错误。

到目前为止,大多数 ADO.Net 示例都是针对MSSQL的,没有经验的用户可能不知道您不能在MySql中使用,等等。SqlConnectionSqlCommand

虽然所有 ADO.Net 数据提供程序都符合相同的接口,但您必须使用为数据库创建的提供程序。

0赞 Shaiwal Tripathi 6/27/2019 #34

我也有这个问题,我尝试了这篇文章中建议的所有内容,但没有任何效果。最后,我通过在SQL Server中执行此查询解决了我的问题

EXEC sp_configure 'remote access', 0 ;  
GO  
RECONFIGURE ;  
GO  
4赞 Mohammad Reza Shahrestani 7/7/2019 #35

在我的情况下,MSSQLSERVER服务有问题,所以我重新启动了服务并解决了问题。

因此,我建议通过以下方式转到服务应用程序:Windows键,搜索“服务”,然后在Microsoft sql server中找到您的SQL实例,通常是“SQL Server(MSSQLSERVER)”。 右键单击服务,然后单击“开始”,如果禁用,请单击“重新启动”。

评论

0赞 Dush 9/30/2021
超过 3 人给出了相同的答案,有些人甚至在您的答案之前附有屏幕截图。
0赞 Dush 9/30/2021
此外,您的最后陈述“如果禁用,请单击重新启动”是不正确的。如果禁用,则无法重新启动。您需要将禁用状态更改为 或 ,然后“启动”服务。ManualAutomatic
0赞 Mike Burger 9/3/2019 #36

我知道这被埋没了,但是当我移动数据库而没有向NT Service\MSQLSERVER帐户授予对我将数据库文件移动到的目录的权限时,我导致了这个问题。授予权限并重新启动 SQLServer 就成功了。

-1赞 Codigo 12/13/2019 #37

我几乎什么都试过了。然后,我卸载了.声称可以删除恶意软件(通常可以)的软件。在那之后,一切都很好。也许有人可能会出于同样的原因遇到同样的问题。Malwarebytes

评论

1赞 Gert Arnold 8/26/2021
不太可能是相关的。
16赞 Mahmud 7/2/2020 #38

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

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

第 2 步:启用 TCP/IP

enter image description here

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

enter image description here

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

enter image description here

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

评论

0赞 Dush 9/30/2021
这与上面@ani627答案相同,大约在 4 年前的 2016 年 7 月 28 日回答。并投票赞成只是复制。
0赞 Mahmud 10/10/2021
一年多前,我遇到了同样的问题,并以这种方式解决了它,因此,我分享了这个。
0赞 TiyebM 10/9/2020 #39

验证用于为 SQL Server 实例创建会话的帐户。

See

5赞 Devca 12/27/2020 #40

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

评论

0赞 Dush 9/30/2021
超过 4 人给出了相同的答案,有些人甚至在您的答案之前附有屏幕截图。
0赞 Sevgi Aykır 1/18/2021 #41

如果 SQL Server 正在运行,但您仍然收到错误; 打开 SQL Server 时,而不是显示的默认服务器名称 您应该 服务器名称 - > 浏览更多>数据库引擎选项。

0赞 Martin Indzhov 9/7/2021 #42

对我来说,解决方案是致电互联网提供商以打开端口 1433。

出于某种原因,他们阻止了端口,我甚至无法 ping 数据库服务器(托管在 Azure 上)。100% 的数据包丢失。

在他们打开港口后,一切又顺利了。

-1赞 Александър К. 1/13/2022 #43

我这么晚才来到这里,遇到了同样的问题。对我来说,问题来了,因为我更改了电脑名称。

0赞 Shiba Das 1/22/2022 #44

当我尝试从其他网络访问mssql服务器时,我得到了解决方案:

Open "SQL Server Configuration Manager"

Now Click on "SQL Server Network Configuration" and Click on "Protocols for Name"

Right Click on "TCP/IP" (make sure it is Enabled) Click on Properties

Now Select "IP Addresses" Tab -and- Go to the last entry "IP All"

Enter "TCP Port" 1433

enter image description here

为端口 1433 添加入站 + 出站规则

2赞 Ralph B. Roman 1/26/2022 #45

用于远程服务器数据库连接。 如果答案都不能满足您的要求,则很可能您尚未将 SQL 端口 1433 添加到 Windows 防火墙例外中。执行以下步骤。

  1. 转到“开始”菜单,打开“运行”,键入 WF.msc
  2. 高级安全 Windows 防火墙中。
  3. 添加入站规则。
  4. 添加端口 1433。
  5. 为规则命名。
  6. 重新启动 SQL 服务。

有关连接远程服务器问题的完整指南。排查连接到 SQL Server 数据库的问题。

0赞 K. B. 3/10/2022 #46

将我的 Windows 升级到 Windows Pro 10 21H2 后,我遇到了同样的问题。我有两个 SQL 实例 - 2014 年和 2019 年,我无法仅连接到 2019 年的实例。 我重新启动了计算机,重新启动了所有与SQL相关的服务。其中两个服务显示错误(SQL Server 和 SQL Server 代理),我无法启动它们。 我也无法从 C:\Windows\SysWOW64\SQLServerManager15.msc 启动这两个服务 在日志 (C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER01\MSSQL\Log) 我看到了这些行:

Initializing the FallBack certificate failed with error code: 15, state: 29, error number: 0.
Error: 17190, Severity: 16, State: 1.
Unable to initialize SSL encryption because a valid certificate could not be found, and it is not possible to create a self-signed certificate.
Error: 17182, Severity: 16, State: 1.
TDSSNIClient initialization failed with error 0x80092004, status code 0x80. Reason: Unable to initialize SSL support. Cannot find object or property. 
Error: 17182, Severity: 16, State: 1.
TDSSNIClient initialization failed with error 0x80092004, status code 0x1. Reason: Initialization failed with an infrastructure error. Check for previous errors. Cannot find object or property. 
Error: 17826, Severity: 18, State: 3.
Could not start the network library because of an internal error in the network library. To determine the cause, review the errors immediately preceding this one in the error log.
Error: 17120, Severity: 16, State: 1.
SQL Server could not spawn FRunCommunicationsManager thread. Check the SQL Server error log and the operating system error log for information about possible related problems.

事实证明,升级后,服务的“登录”属性(服务属性上的第二个选项卡)设置为 NT AUTHORITY\NETWORK SERVICES。当我将其更改为“本地系统帐户”时,我能够启动该服务并连接到 MS SQL 2019 实例。

这篇 msdn 论坛帖子帮助我找到了这个。

0赞 yusuf hayırsever 4/23/2022 #47

如果要删除迁移,则应检查 ConnectionString。

3赞 AlbinR 5/12/2022 #48

更改计算机名称后,我遇到了这个问题。 因此,我只需在 SQL Server Management Studio 中更新服务器名称:

“服务器名称” -> “浏览更多...” -> “数据库引擎” -> 选择“[您的计算机名称]” -> “确定”

0赞 kode-Aid 6/21/2022 #49

面临类似的问题。对我来说,应用程序设置。Production.json文件未被生产服务器使用,并且应用程序正在使用appsettings.json文件。系统中的环境变量未设置为生产。它总体上将请求定向到不同的服务器。

0赞 vishal 9/23/2022 #50

如果 Tomcat 服务器或您正在使用的任何服务器已关闭,则可能会发生此错误。

0赞 Andreas Jansson 11/1/2022 #51

在远程 (VPN) 工作了几年后,我收到了这个错误。在某个时间点,我一定已将我的DNS设置更改为家庭路由器的IP地址。 现在我(再次)与服务器处于同一网络中,并收到上述错误。 解决方案是打开“网络状态”/“更改适配器选项”,然后右键单击活动的互联网连接(在我的情况下是以太网)以获取 IPv4 的属性。 在“使用以下DNS服务器地址”下,我输入了服务器的本地IP地址,你知道什么......!计算机联系了域(在服务器上),SQL Server 打开了。

要检查您是否遇到同样的问题,请打开 cmd 并输入 nltest /dsgetdc:域名 [将“域名”替换为您的域名] 如果您收到一条消息,指出“获取 DC 名称失败:状态 = 1355 0x54b ERROR_NO_SUCH_DOMAIN”,则可能是域名错误,也可能有此问题。

1赞 Udishan 12/19/2022 #52

即使我使用正确的凭据,我也面临这种问题。请确保执行以下操作。

请确保 SQL Server 的凭据。在 sql server 字段中,您必须使用计算机名称。enter image description here

若要查找计算机名称,请在计算机上搜索“计算机名称”,然后可以找到计算机名称。然后粘贴它并尝试连接。

如果它不起作用,请尝试从服务启动计算机上的 sql server。下面的屏幕截图会有所帮助。

enter image description here

评论

0赞 Code Novice 9/9/2023
我的 IT 部门对我的计算机进行了更新,更改了我的计算机名称。没有人告诉我这将会发生。我花了太长时间试图找到一个更复杂的原因,导致我无法访问自己的SQL Server Express服务器,却发现我的本地PC服务器在我不知情的情况下被更改了。
0赞 ahmetsokmen 1/9/2023 #53

在尝试了所有答案后,我在 servername 和逗号后输入端口号 (1433) 到连接字符串中对我有用。它在下面:

"Server=**.***.***.*\\MYSERVER,1433;Database=****;User Id=****;Password=*****;MultipleActiveResultSets=true;TrustServerCertificate=True"
0赞 curiousBoy 2/7/2023 #54

对于 AZURE VM 用户

我已经尝试了上述所有方法(所以这些方法仍然有效),但仍然没有。

重要:我的只是一个游乐场服务器,所以安全性真的不是问题。所以做你的研究,这只是一种解决方法,而不是一种生产安全的方法。

确保您可以 ping 您的服务器。就我而言,我能够 RDP,但无法在 Azure 上 ping 我的服务器。我一直收到请求超时。默认情况下,Beacuse 似乎 Azure 会阻止 ICMP 协议。

您可以向防火墙添加规则。就我而言,无论我通过该机器上的防火墙添加了什么,都没有改变。感谢@John的上述回答,这也提醒了我,我必须从 Azure 门户上的网络添加此内容。

一旦我为端口 0 添加了规则,那么我终于能够远程连接了。

这个链接 这个链接也很有帮助。

enter image description here

0赞 Gi1ber7 7/19/2023 #55

我在使用 MS SQL 2022 时遇到了类似的问题。最初安装时,我能够使用 MSSQL Management Studio 访问数据库,但在计算机重新启动后,SQL Server 引擎不会自动启动。在我的情况下,它是用于登录的帐户,默认帐户是MSSQLSERVER。我将帐户更改为我的计算机帐户(或域帐户,如果您在公司环境中)...在“SQL Server >>计算机管理>>服务和应用程序”>>右键单击“>>属性”>>“登录”>>“此帐户”>>输入用户 ID 密码并确认密码。然后单击“开始”按钮以启动数据库引擎。

0赞 Monirul Islam 10/19/2023 #56

Windows Server 8 R2 和 SQL Server 8 R2

我刚刚重新盯着我的服务器PC并解决了问题。

0赞 Iruku Kagika 11/15/2023 #57

我的问题是我使用 localhost/12.7.0.0.1 进行连接,但它在 Sql Server 配置中被禁用。

打开Server Confuguration Manager -> SQL Server Network Configuration -> Protocols for MSSQLSERVER -> TCP/IP (Make sure this is enabled) ->Properties -> Enable

您需要重新启动服务器才能使更改生效。enter image description here