为啥在建立与 SQL Server 的连接时会发生与网络相关或特定于实例的错误?

Posted

技术标签:

【中文标题】为啥在建立与 SQL Server 的连接时会发生与网络相关或特定于实例的错误?【英文标题】:Why did a network-related or instance-specific error occur while establishing a connection to SQL Server?为什么在建立与 SQL Server 的连接时会发生与网络相关或特定于实例的错误? 【发布时间】:2010-11-26 08:44:33 【问题描述】:

我很沮丧。我有一个使用本地数据库在 Visual Web Developer 2008 Express 上运行的网站,一切正常。我也在生产服务器上运行相同的网站。一切都很好,但今晚我对生产进行了“重置”。

    我删除了几个表,重新创建它们并插入数据。此时一切正常。

    我通过 FTP 删除了所有文件。

    我在visual studio中使用了名为“复制网站”的模块,并通过FTP将网站复制到网站。

当我登录我的网站时,出现以下错误:

“/”应用程序中的服务器错误。

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

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定实例)


与 SQL 连接相关的一切都没有改变,这是我一直使用的旧代码。 我的网站因此完全瘫痪,我内心感到恶心,因为我觉得我无能为力。

谁能帮帮我?

【问题讨论】:

你能从另一台机器连接到 SQL 服务器吗?你是不是不小心关机了? 我在尝试连接我的 SQL 管理工作室时遇到了同样的错误。事实上,我以前从未尝试过,所以我不知道这是一种新行为还是同样的事情。这是一个生产服务器,所以我不知道我的 sql 服务器是否已关闭。我所知道的是,从网络面板,我可以毫无问题地访问我的数据库的内容...... 我建议你的 sql server 要么关闭,要么可能有新的防火墙等。我的建议是首先重新启动 sql server 框。然后,如果这种情况继续存在,请与您的基础架构人员核实 SQL 服务器是否已启动并正在运行并可以从其他计算机访问。 我已经按照这里的故障排除步骤解决了这个问题:docs.microsoft.com/en-us/sql/database-engine/configure-windows/… 代码迁移 (update-database et al) see this answer. 【参考方案1】:

当您在服务器上复制新网站版本时,您的连接字符串可能已被覆盖。请检查 web.config 中的连接字符串,看看它是否有效。

【讨论】:

事实上,我之前使用的是 Visual Studio 2005,并且正在执行“发布到网站”。我不知道的是,在此过程中,Visual Studio 在编译之前将站点置于调试模式 = false juste。现在我有 Visual Web developer 2008 express 并使用复制到网站来代替,那还没有完成。由于我的连接字符串基于“我们是否在调试”,它试图连接到我的开发服务器!谢谢! 其他解决方案,使用服务查看this,希望有所帮助。 代码迁移 (update-database et al) see this answer.【参考方案2】:

如果您从 Windows 机器 A 连接到 Windows 机器 B(安装了 SQL Server 的服务器)并收到此错误,您需要执行以下操作:

机器 B

    打开名为“SQL Server Browser”的 Windows 服务并启动该服务 在 Windows 防火墙 中: 启用传入端口 UDP 1434(以防机器 A 上的 SQL Server Management Studio 正在连接或机器 A 上的程序正在连接) 启用传入端口 TCP 1433(如果有 telnet 连接) 在 SQL Server 配置管理器中: 为端口 1433 启用 TCP/IP 协议

【讨论】:

【参考方案3】:

我已经解决了这个问题。这是由于 SQL 浏览器服务。

此类问题的解决方案是以下之一 -

检查连接字符串中指定的 SQL Server 实例名称的拼写。

使用 SQL Server 外围应用配置工具使 SQL Server 能够接受通过 TCP 或命名管道协议的远程连接。有关 SQL Server 外围应用配置工具的详细信息,请参阅服务和连接的外围应用配置。

确保您已将 SQL Server 服务器实例上的防火墙配置为打开 SQL Server 端口和 SQL Server Browser 端口 (UDP 1434)。

确保 SQL Server Browser 服务已在服务器上启动。

链接-http://www.microsoft.com/products/ee/transform.aspx?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=-1

【讨论】:

SQL Server 浏览器对我来说被禁用了,不知道为什么它是这样开箱即用的,但确实成功了,谢谢。 这个问题很奇怪......我得到了 MS Sql Server 连接异常,但我是使用 mysql 设置的。连接在单元测试中起作用。【参考方案4】:

检查以下内容:

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

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

    检查 SQL Server 服务帐户

• 如果您没有将域帐户用作服务帐户(例如,如果您使用的是 NETWORK SERVICE),则可能需要先切换此帐户,然后再继续

    如果您使用的是命名 SQL Server 实例,请确保您在 ASweb P.NET 应用程序的连接字符串中使用该实例名称

• 通常指定数据库服务器所需的格式是机器名\实例名 • 检查您的连接字符串以及

【讨论】:

将连接字符串中的“localhost”更改为 SQL Server 实例名称有效。正确的实例是“PCNAME\SQLEXPRESS”。【参考方案5】:

原因是 SQL SERVER 从 services.msc 停止 此问题的解决方案可能是从 services.msc 启动 SQL SERVER

【讨论】:

【参考方案6】:

我在使用 SQL Server 2008 R2 时遇到了同样的问题,当我检查“SQL Server 配置管理器”时,我的 SQL Server 实例已停止。右键单击并启动实例解决了这个问题。

【讨论】:

【参考方案7】:

我们必须在sql server configuration manager 中启用 TCP/IP 属性

【讨论】:

【参考方案8】:

我最近遇到了这个问题,最后是端口问题。我的生产 SQL Server 设置为端口 1427 而不是 1433。

只需将连接字符串更改为

...data source=MySQLServerName,1427;initial catalog=MyDBName...

希望这对可能遇到同样问题的人有所帮助。

【讨论】:

【参考方案9】:

如果您的服务器正在工作并突然开始出错,则您的服务器/实例停止并且连接设置以某种方式更改。

对于 SQL Server 2008,您可以按照以下方式进行调整:

    转到Start > All Programs > SQL Server 2008 > Configuration Tools > SQL Server Configuration Manager > SQL Server Services. 在这里,您将看到所有实例及其状态。 您尝试连接的实例的状态可以在此处停止。 双击实例,然后单击连接。 它将连接,现在返回并运行您的应用程序,您将能够无错误地连接。

此解决方案假定错误不是由连接字符串中的错误引起的。

【讨论】:

如果您重新格式化为多个段落,这将有助于回答这个问题【参考方案10】:

就我而言,这是一个非常愚蠢的错误。我正在使用库从配置文件中读取连接字符串,但我忘记了双反斜杠。

例如,我有: localhost\sqlexpress 读作localhostsqlexpress 当我宁愿拥有 localhost\\sqlexpress 注意 \

【讨论】:

【参考方案11】:

我遇到了同样的问题,即在建立与 SQL Server 的连接时发生了与网络相关或特定于实例的错误。

我正在使用 SQL Server 2005 (.\sqlexpress)` 并且工作正常,但突然服务停止并出现错误。

我是这样解决的,

开始 -> 搜索框 -> Sql 配置管理器 -> SQL Server 2005 服务 >然后通过右键单击该服务状态将 SQL Server (SQLEXPRESS) 状态更改为正在运行。

【讨论】:

【参考方案12】:

我通过在指定的in this post 提升的命令提示符中运行以下命令解决了这个问题。

net start mssqlserver

【讨论】:

【参考方案13】:

我遇到了同样的问题,但发现这是因为我的数据库引擎服务帐户的密码已过期。解决方案是登录该帐户,修复此问题,然后设置该帐户以使密码永不过期。

【讨论】:

【参考方案14】:

我的远程 sql 服务器期望连接到不同的端口,而不是默认的 1443

解决方案是在您的 sql 服务器 IP 之后添加一个“,”,然后像这样添加您的端口 129.0.0.1,2995(检查“ , " 在服务器 IP 之后)

请在下面找到图片以供参考。

【讨论】:

【参考方案15】:

我遇到了同样的错误,结果是 .NET 在 localhost 上创建了一个我不知道的数据库。当我试图让网站上线时,它没有创建数据库,所以代码指向一个不存在的数据库。

希望这可以帮助其他一些人尝试进行故障排除。

【讨论】:

以上是关于为啥在建立与 SQL Server 的连接时会发生与网络相关或特定于实例的错误?的主要内容,如果未能解决你的问题,请参考以下文章

vs 或 Sql server2012连接Sql server时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误

vs 或 Sql server2012连接Sql server时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误

SQL Server -- 已成功与服务器建立连接,但是在登录过程中发生错误

PHP sqlsrv_connect 到 SQL Server:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误

MySQL“建立与 SQL Server 的连接时发生网络相关或特定于实例的错误”

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