【问题标题】:How to solve the system.data.sqlclient.sqlexception (0x80131904) error [closed]如何解决system.data.sqlclient.sqlexception(0x80131904)错误[关闭]
【发布时间】:2014-03-19 12:03:51
【问题描述】:

我使用 C# 和 SQL Server 2008 R2 创建了一个可以在我的 PC 上完美运行的应用程序。我的连接字符串是:

connectionString="Data Source=KELVIN-PC;Initial Catalog=LMS;User ID=sa;Password=temperament"

但我已将其发布并安装在另一台 PC 上。我还将LMS.bak 文件复制到PC 并在其上恢复了数据库MS SQL Server 2008 R2。但是每当它必须连接到另一台机器上的数据库时,它就会给出以下错误:

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

我花了几个小时在互联网上搜索,但大多数已回答的问题与我自己的问题略有不同,而且我尝试过的一些建议并没有真正奏效。

【问题讨论】:

  • 您是否更改了连接字符串中的机器名称?例如。我假设您的“其他 PC”也不称为 KELVIN-PC 。对吗?
  • 我不同意题外话的评论。此问题只能由具有良好 ADP.NET (System.Data.SqlClient) 经验的人解决。除非他们拥有良好的 ADO.NET 经验(这是一种编程技能),否则{专业的服务器或网络相关的基础架构管理}都无济于事。

标签: c# sql sql-server-2008


【解决方案1】:

数据源默认是 .\SQLEXPRESS(它是默认放置数据库的实例),或者如果你在安装 sql server 期间更改了实例的名称,所以我建议你这样做:

connectionString="Data Source=.\\yourInstance(defaulT Data source is SQLEXPRESS);
       Initial Catalog=databaseName;
       User ID=theuser if u use it;
       Password=thepassword if u use it;
       integrated security=true(if u don t use user and pass; else change it false)"

在不知道您的实例的情况下,我可以帮助解决这个问题。希望对您有所帮助

【讨论】:

  • 数据源默认为.\SQLEXPRESS如果你安装的是Express版!发生这种情况,例如使用 Visual Studio - 但在单独的独立 PC 上,您可能会安装 不同 版本的 SQL Server,然后您的语句就会出错
  • @Souf,谢谢。你的建议奏效了,我已经解决了这个问题。我删除了用户名和密码,并设置了集成安全=true;
  • 很高兴能帮助您,欢迎您 :) 顺便将其标记为解决方案,以便其他人知道!
【解决方案2】:

您还需要更改连接字符串的DataSourceKELVIN-PC 是你本地机器的名字,sql server 在默认实例上运行。

如果您确定服务器作为默认实例运行,您可以随时在数据源中使用.,例如。

connectionString="Data Source=.;Initial Catalog=LMS;User ID=sa;Password=temperament"

否则,需要指定服务器实例的名称,

connectionString="Data Source=.\INSTANCENAME;Initial Catalog=LMS;User ID=sa;Password=temperament"

【讨论】:

  • 要进一步扩展此答案,您可以使用 Environment.MachineName 指定正确的 ConnectionString 变量(即,如果 Evironment.MachineName = "Kelvin-PC" then connectionString = "..." else connectionString = "...")
【解决方案3】:

嗯,你做了错误所说的吗?您详细介绍了安装,但显而易见的呢?

  • 在 SQL Server 中检查其他服务器的网络配置。
  • 检查其他机器的防火墙。 SQL Server 不会自动打开端口,因此 windows 防火墙通常会阻止访问..

【讨论】:

    猜你喜欢
    • 2014-11-25
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 2018-08-15
    • 2015-03-23
    • 2014-09-05
    相关资源
    最近更新 更多