首页 文章

为什么我会收到“无法连接到服务器 - 与网络相关或特定于实例的错误”?

提问于
浏览
289

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

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

当我尝试在Visual Studio 2010中将数据库配置为gridview时抛出此错误 . 我对如何调试此错误感到茫然 .

你会如何调试此错误?除了错误消息中提到的那个之外,我应该采取哪些步骤来确定这里真正发生的事情?

30 回答

  • 11

    我得到了解决方案:

    打开“SQL Server配置管理器”现在单击“SQL Server网络配置”并单击“名称协议”右键单击“TCP / IP”(确保它已启用)单击“立即属性”选择“IP地址”选项卡 - 并且 - 转到最后一个条目“IP All”输入“TCP Port”1433 . 现在重新启动“SQL Server .Name” . 使用“services.msc”(winKey r)

    它会工作......

  • 1

    您可以测试以下方法 .

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

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

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

    • 在左侧面板中单击'Windows Firewall with Advanced Security'

    • 在右侧面板中,右键单击'Inbound Rules',然后单击'New Rule'

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

    • 在“协议和端口”对话框中,选择'TCP',然后选择'Specific Local Ports',然后键入端口号1433,单击“下一步” .

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

    • 在'Profile'对话框中,检查域,私有和公共,然后单击下一步

    • 在'Name'对话框中,键入'SQL 1433 Port',并为自己的描述写入描述 . 然后单击Finish

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

  • 70

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

    service Image

  • 3

    Summary

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

    Details

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

    必须使用SQL Server配置管理器为远程开发人员数据库服务器添加别名 . 修正了事情 .

    enter image description here

  • 2

    我必须将 SQL Server Browser 服务运行到 SQL Server Configuration Manager . 没有这个,安装无法发现新创建的服务 .

  • 2

    我遇到了同样的问题,问题是我在解决方案中有几个项目( 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 设置为 Web 并将 Default Project 设置为 Package Manger Console 后,我开始工作了 .

  • 1

    除了尝试Teo Chuen Wei Bryan建议的所有内容外,请确保您还在连接字符串中引用了正确的服务器/实例名称 .

    如果您在数据库服务器或web.config文件中使用简短形式的主机名/实例,请确保使用 fully qualified domain name(FQDN)/Instance

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

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

    • 右键单击该文件,您可以看到连接选项卡 .

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

    希望这可以帮助 .

  • 2

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

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

    enter image description here

    希望这会奏效 .

  • 10

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

    我最终记得VM有 endpoints 由Azure帐户代理控制,所以我继续使用Azure门户并添加了1433作为可用 endpoints ,我可以连接到我的SQL实例 .

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

  • 1

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

    至少发生在我身上 .

  • 3

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

    • 重启sql server服务 .

    • 重启调用sql server的服务(比如说IIS) . (问题可能在这里,如果从SQL服务器的服务调用开始到最终得到响应错误的时间之间的时间超短(大约一秒或两秒) .

    • 重启服务器sql server是否开启 .

    • 重启服务器,呼叫服务已打开 .

  • 3

    当您的SQL Server实例是 stopped 时,会发生此错误 .

    转到所有程序> SQL Server>配置工具> SQL SERVER CONFIGURATION MANAGER

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

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

  • 263

    我想你正在使用Express Edition

    尝试将 "\SQLEXPRESS" 添加到您的服务器名称

    例如 "MY-SERVER\SQLEXPRESS"

    enter image description here

  • 96

    window + R (Run window Open) 并在运行窗口中键入 "services.msc" 并打开新服务查找 SQL SERVER(SQLEXPRESS) 服务启动并再试一次它对我有用希望它的工作也适合你 .
    enter image description here

  • 2

    如果以上解决方案都不起作用(对我没用),那么只需重新启动计算机,就可以连接到sql server(localhost) .

  • 4

    此解决方案还解决了网络错误和sql server背后的服务

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

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

    我发现最简单的是做下面的事情 - 我附上了图片和步骤以寻求帮助 .

    首先验证您已安装的实例,您可以通过 checking the registryby running 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"

    SqlLOCALDb_edited.png

  • 2

    做完这里提到的一切之后:
    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 而不是使用这个服务器名称 .

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

    谢谢 .

  • 10

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

    使用SSMS2012或SSMS2016应用相同的问题 . 我使用Windows身份验证访问10个sql服务器仍然是相同的 . 我可以从另一台服务器测试这个 . 但是, 2 of the 10 servers would not connect from my laptop . 两者都是ms sql server 9但我可以连接到其他sql server 9数据库 .

    解决方案是 add a firewall rule (使用具有高级安全性的Windows防火墙) .

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

    我不是网络专家,所以我没有包括细节,但希望它会指出你正确的方向 .


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

  • 2

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

    enter image description here

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

    Incorrect connection string

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

    Correct connection string

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

    希望这有助于那里的人 .

  • 12

    我的问题是你需要在 both 你的存储库层和web层中有一个连接字符串条目 . 一旦我将其添加到我的web.config as well as my app.config,Entity Framework就能够创建迁移 .

    我的问题是,为什么web.config需要它,当时完全没有数据库访问权限 .

  • 70

    为什么这个错误是如此的boresome和嘈杂,只是因为它可以发生在各种情况下 .

    I have done all approchs above here, and still being sucked. So make sure u have done the same as me before browsing downward.

    也许我无法立即解决你的情况, but I can point out a direction or thinking to u (终于在这里滑下来的人) . 在确定实例名称明确正确并将数据库设置为允许按照上述方法进行远程控制之后,我开始思考正在运行的程序的错误 . 之后, I suspected something wrong happening in my code snippet of SQL connection.

    解决我的问题:

    • 检查我的sqlconnection函数

    • 单击以查看其配置

    • 新连接

    enter image description here

    • 选择您的服务器名称

    enter image description here

    它适用于我思考在连接过程中究竟发生了什么 . 希望我的想法将导致你杀死你的错误 .

  • 5

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

    sqllocaldb start name_of_instance
    

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

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

    sqllocaldb start v11.0
    
  • 1

    我正在使用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访问在“开始”菜单上,单击“运行”,键入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 . 点击下一步 . 在“操作”对话框中,选择“允许连接”,然后单击“下一步” . 在“配置文件”对话框中,选择要在连接到数据库引擎时描述计算机连接环境的任何配置文件,然后单击“下一步” . 在“名称”对话框中,键入此规则的名称和说明,然后单击“完成” .

    看看微软的doucmentation Configure a Windows Firewall for Database Engine Access

  • 2

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

    • 转到搜索并键入“SQL Server 2014 Configuration Manager

    • 然后单击左侧菜单上的"SQL Server Service"

    • 如果SQL Server服务状态已停止或正在运行,请检查该实例

    • 如果已停止,请将状态更改为正在运行并登录到SQL Server Management Studio 2014

  • 3

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

  • 12

    我发现以下技术很有用:

    • 确保将数据库引擎配置为接受远程连接:开始>所有程序> 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 Server服务是否已正常运行:转到所有程序> 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的默认端口的位置 .

  • 1

    添加我的大量赞成comment作为截图的答案 .

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

    1)打开 Sql Server Configuration Manager - > SQL Server Network configuration - > Protocols for <(INSTANCE)> - > TCP/IP (双击它) .

    enter image description here

    2)选择 - > IP Addresses(Tab) .

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

    enter image description here

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

    5)现在重启 SQL Server <(INSTANCE)> .

    enter image description here

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

  • 5

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

    “ Build 与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文本(具体地说,"Narrative"列的数据中的某些编码注释符号 <!-- ) . 可疑数据行如下所示:

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

    请注意编码的HTML符号“ &lt; ", which stood for a " <" character. Somehow that made its way into the database and my C# code could not pick it up! It failed everytime right at the connect.Open() line! After I manually edited that one row of data in the database table Friends and put in the decoded " <”字符,一切正常!这是该行应该是什么样子:

    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搜索的讨论的主题!)

  • 3

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

    • 打开"Run"并输入 services.msc

    • 查找SQL Server(实例名称)和SQL Server Browser的服务 . 一次一个,右键单击,选择"Properties",将路径复制到exe文件

    • 然后打开 firewall.cpl ,单击允许应用程序或添加规则,添加以前复制的路径(需要遵循的过程),选中域和专用,取消选中公共 .

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

  • 4

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

相关问题