1 votes

NHibernate ne se connecte pas à SQL Server

J'ai 3 instances SQL Server en cours d'exécution sur notre serveur (ne demandez pas pourquoi) !

2xSQL Server 2008 Workgroup (Default et MSSQLServer2) 1xSQL Server Express 2008 R2 (sqlexpress)

Maintenant, j'ai un service/application Windows qui exécute un processus en arrière-plan. Les bases de données sont à peu près les mêmes, mais chaque fois que j'essaie d'exécuter le service sur l'instance MSSQLServer2, NHibernate lève une exception.

J'ai vérifié mes chaînes de connexion et cela semble correct, car j'ai pu copier les autres, pour être sûr.

J'ai réinitialisé le mot de passe du compte que j'utilise et j'ai vérifié que je peux m'y connecter en utilisant Management Studio avec les nouvelles informations.

Je ne sais pas quoi tester d'autre. L'application se charge (comme elle crée une entrée Log4View) mais dès qu'elle fait sa première requête NHibernate, elle se plante, avec le vidage suivant et aucun journal d'événement supplémentaire :

Description : A cessé de fonctionner

Signature du problème : Événement du problème Nom : CLR20r3 Signature du problème 01 : R2K3ITVW3VUVRUM1CITUNG1NSZBMATAX
Signature du problème 02 : 1.0.0.0
Signature du problème 03 : 4de87428
Signature du problème 04 : NHibernate
Signature du problème 05 : 1.2.0.4000
Signature du problème 06 : 4639a07f
Problème Signature 07 : 2ad Problème Signature 08 : 78 Signature du problème 09 : OS NHibernate.LazyInitialization Version : 6.0.6001.2.1.0.272.7 Locale ID : 2057

Lisez notre déclaration de confidentialité :
http://go.microsoft.com/fwlink/?linkid=50163&clcid=0x0409

0voto

DuskFall Points 141

Comme vous l'avez mentionné, l'événement du journal ne donne pas beaucoup d'informations.

Des exceptions de type LazyInitialization sont lancées si les objets ne sont pas complètement instanciés. Habituellement, je m'attends à un message d'erreur du type ne peut pas se connecter à la base de données . Par conséquent, je m'attends à ce que le code présente des failles. Au moins, je suppose qu'il n'est pas correctement vérifié si une connexion à la base de données a été établie avec succès avant de faire d'autres choses hibernate comme l'instanciation d'objets.

Après avoir abordé des aspects plus centrés sur le code, examinons la cause et les solutions possibles. J'ai remarqué une différence : vous rencontrez des exceptions uniquement lorsque vous vous connectez à l'instance qui n'est pas celle par défaut. Je suppose que celle-ci n'est pas sur le port standard (1433).

Peut-être que le numéro de port est codé en dur (1433) ? Il semble que les applications ne fonctionnent qu'avec les instances par défaut. Vous pouvez essayer de configurer manuellement votre instance MSSQLServer2 d'utiliser le port 1433, juste pour le dépannage. Existe-t-il des fichiers de configuration ou des entrées de registre permettant de spécifier le numéro de port ? Ou le numéro de port est-il indiqué dans la chaîne de connexion ? Si l'application est vraiment codée en dur pour utiliser l'instance par défaut et/ou le port 1433, il n'y a à mon avis rien que vous puissiez faire en tant qu'administrateur pour la faire fonctionner avec la deuxième instance.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X