NHibernate 无法连接到 SQL Server

NHibernate 无法连接到 SQL Server

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

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

现在我有一个在后台运行进程的 Windows 服务/应用程序。数据库基本相同,但是每当我尝试在 MSSQLServer2 实例上运行该服务时,NHibernate 都会抛出异常。

我已经检查了我的连接字符串并且看起来没有问题,因为我已经能够复制其他的,以确保万无一失。

我已重置我正在使用的帐户密码,并检查我是否可以使用 Management Studio 和新的凭证连接到该帐户。

我不知道还要测试什么。应用程序加载(因为它创建了一个 Log4View 条目),但是一旦它发出第一个 NHibernate 请求,它就会崩溃,并出现以下转储,但没有其他事件日志:

描述:停止工作

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

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

答案1

正如您所说,日志事件没有提供太多信息。

如果对象未完全实例化,则会引发 LazyInitialization 异常。通常,我会期望出现类似这样的错误消息无法连接到数据库。因此,我预计代码中会存在一些缺陷。至少,我认为在执行其他 Hibernate 操作(例如实例化对象)之前没有正确检查与数据库的连接是否已成功建立。

在讨论了一些以代码为中心的内容之后,让我们考虑一下原因和可能的解决方法。我发现了一个不同之处:只有在连接非默认实例时才会遇到异常。我猜,这个不在标准端口(1433)上。

也许端口号是硬编码的(1433)?看起来应用程序只适用于默认实例。您可以尝试手动配置您的实例MSSQL服务器使用端口 1433,仅用于故障排除。是否有配置文件或注册表项可以指定端口号?或者在连接字符串中给出了端口号?如果应用程序真的被硬编码为使用默认实例和/或端口 1433,我认为作为管理员您无法做任何事情来使其与第二个实例一起工作。

相关内容