NHibernate将不会连接到SQL Server

我有3个SQL Server实例在我们的服务器上运行(不要问为什么)!

2xSQL Server 2008工作组(默认和MSSQLServer2)1xSQL Server Express 2008 R2(sqlexpress)

现在我有一个在后台运行进程的Windows服务/应用程序。 数据库几乎是相同的,但是每当我尝试运行MSSQLServer2实例上的服务NHibernate抛出一个exception。

我已经检查了我的连接string,这似乎很好,因为我已经能够复制其他人,可以肯定。

我已经重置了我正在使用的帐户密码,并检查了我可以使用Management Studio连接到新密码。

我不知道还有什么要testing的。 该应用程序加载(因为它创build一个Log4View条目),但一旦它使第一个NHibernate的请求崩溃,与下面的转储,没有额外的事件日志:

说明:停止工作

问题签名:问题事件名称:CLR20r3问题签名01:R2K3ITVW3VUVRUM1CITUNG1NSZBMATAX
问题签名02:1.0.0.0
问题签名03:4de87428
问题签名04:NHibernate
问题签名05:1.2.0.4000
问题签名06:4639a07f
问题签名07:2问题签名08:78问题签名09:NHibernate.LazyInitialization OS版本:6.0.6001.2.1.0.272.7区域设置ID:2057

阅读我们的隐私声明:
http://go.microsoft.com/fwlink/?linkid=50163&clcid=0x0409

正如你所提到的,日志事件并没有提供太多的信息。

如果对象没有完全实例化,则抛出LazyInitializationexception。 通常情况下,我会期望像无法连接到数据库的错误信息。 因此,我希望代码中有一些缺陷。 至less,我认为没有正确地检查到数据库的连接是否成功build立之前做其他hibernate的东西,如实例化对象。

在谈到更多以代码为中心的东西之后,我们来考虑原因和可能的解决方法。 我的眼睛抓住了一个区别:只有在连接非默认实例时才会遇到exception。 我猜,这个不在标准端口(1433)。

也许端口号是硬编码的(1433)? 看起来应用程序只适用于默认实例。 您可以尝试手动configuration您的实例MSSQLServer2使用端口1433,仅用于故障排除。 有configuration文件或registry项在哪里指定端口号? 或者是连接string中给出的端口号? 如果应用程序真的被硬编码使用默认的实例和/或端口1433,在我看来,没有什么可以做一个pipe理员,使其与第二个实例工作。