错误信息:(提供程序:共享内存提供程序,错误:0 - 管道另一端没有进程。)

89

我正试图在Windows Server 2003上部署我的网站。以下错误信息是否有遗漏或出现了什么问题?我该如何纠正它?谢谢。

我遇到了以下错误信息:

 

已成功与服务器建立连接,但在登录过程中发生错误。(提供程序:共享内存提供程序,错误:0 - 管道的另一端没有进程。) 说明:执行当前 Web 请求时出错。请查看堆栈跟踪以获取有关错误以及其在代码中的位置的更多信息。

 

异常详细信息:System.Data.SqlClient.SqlException:已成功与服务器建立连接,但在登录过程中发生错误。(提供程序:共享内存提供程序,错误:0 - 管道的另一端没有进程。)

 

源错误:

 

在执行当前 Web 请求时生成了一个未处理的异常。可以使用下面的异常堆栈跟踪来识别异常的起源和位置。

 

堆栈跟踪:

 

[SqlException(0x80131904):已成功与服务器建立连接,但在登录过程中发生了错误。(提供程序:共享内存提供程序,错误:0 - 管道的另一端没有进程。)]
  System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection ownObject)+1019
  System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)+108
  System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory)+126
  System.Data.SqlClient.SqlConnection.Open()+125
  NHibernate.Connection.DriverConnectionProvider.GetConnection()+104
  NHibernate.Tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.Prepare()   + 15 NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords(Dialect   dialect,IConnectionHelper connectionHelper)+89
  NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactory   sessionFactory)+80

NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners) +599
NHibernate.Cfg.Configuration.BuildSessionFactory() +104
MyProject.API.Data.SessionManager..cctor() in C:\Dev\Code\API\Data\SessionManager.cs:27

这段代码涉及到NHibernate技术。其中,NHibernate是一个流行的ORM(对象关系映射)框架,用于在应用程序和数据库之间进行数据交互。该错误是由SessionManager.cs文件中的静态构造函数引起的,即创建对话工厂时出现问题。需要检查配置文件和映射以确保它们正确,并且事件侦听器也必须被正确地设置。

2
当我尝试连接的用户没有访问数据库权限时,我得到了这个错误。 - Peter
1
我之所以得到这个错误是因为连接字符串中用户的密码已经过期了。 - Uwe Keim
1
@UweKeim 谢谢!这正是我需要的线索,因为我在 Appveyor 构建 VM 上遇到了错误,我想他们记录的用户/密码已经过期了。最终我只是改用了集成安全性。 - Keith Nicholas
27个回答

0
在我的情况下,我的磁盘已满99%,只有在我释放了80%的磁盘空间后才能正常工作。

0

对于那些使用EntityFramework Code First的人,还要检查是否已经完成了迁移。 查找根本原因的最佳位置是SQL Server错误日志


0
我在一个代码优先的应用程序中遇到了这个问题,该应用程序期望数据库已经存在:
请确保数据库已创建/连接字符串中的名称正确。

0
在我的情况下,我的状况有些不同。 1. 我的错误:我在stringConnection中缺少了一个“;”。我知道这是一个新手错误,但我对C#和SQL Server还很陌生。我只有一天时间 :)

private string connectionString = "Data Source=localhost;Initial Catalog=FundamentalsCSharp" 
       + "User=sa;Password=123456";

2. 我的解决方案:在短语“FundamentalsCSharp”后面加上缺失的“;”,然后它就可以工作了。

private string connectionString = "Data Source=localhost;Initial Catalog=FundamentalsCSharp;" 
       + "User=sa;Password=123456";

3. 注意:请将“FundamentalsCSharp”更改为您拥有的Initial Catalog。

希望这对某人有所帮助。谢谢!


0

您好,只需按照下面附加的屏幕截图启用服务器身份验证即可。

enter image description here


0

检查使用 SQL Management Studio 登录的服务器名称是否与您的连接字符串匹配。

今天我遇到了这个错误。 事实证明,我没有意识到安装了 SQL Server 的机器上有多个运行的服务器。实际上,我把我的数据库放在了一个完全不同的服务器上,而不是我认为正在使用的那个服务器。(因此,我的连接字符串指向一个没有数据库的服务器)

因此,当 .net 尝试访问数据库时,它找不到任何东西,并且只提供了一个关于管道的误导性错误消息。

我在 SQL Management Studio 中打开了正确的服务器,将我的数据库添加到其中,然后一切正常工作。 (如果下拉菜单中没有正确的服务器,请尝试浏览它。)

Image showing the connection string matching the correct server name


0

我知道我可能是唯一一个以这种方式遇到这个问题的人。但是如果你在C:/{user}/目录中删除了mdf文件,你也会遇到这个错误。恢复它,你就万事大吉了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接