2009-07-27 16 views
1

Je remplace mon ancien DAL par NHibernate 2.1. Ma config NHibernate fonctionne sur ma machine de développement locale mais pas sur UAT. La base de données UAT est une configuration de cluster sur un port par défaut. J'utilise un fichier CONFIE norme NHibernate similaire à ci-dessous:Chaîne de connexion NHibernate: comment spécifier le numéro de port et le serveur instance?

<?xml version="1.0" ?> 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > 
    <session-factory> 
     <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
     <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> 
     <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> 
     <property name="connection.connection_string">Server=(local);Initial Catalog=dbname;User Id=user;Password=********</property> 
    </session-factory> 
</hibernate-configuration> 

Je pense que le problème est la façon dont je précise la chaîne de connexion dans le fichier de configuration NHibernate parce que mon travail avec la chaîne de connexion suivante DAL existante:

Data Source=uatserver\db01,1433; 
     Initial Catalog=dbname; 
     User ID=dbuser; 
     Password=userpassword 

Dans le fichier de configuration NHibernate, j'ai essayé les combinaisons suivantes, aucune ne fonctionnait et j'obtenais différents messages d'erreur, mais la plupart du temps, ils disaient ne pas pouvoir se connecter.

<property name="connection.connection_string"> 
     Server=tcp:(uatserver\db01),1433; 
     Initial Catalog=dbname; 
     User ID=dbuser; 
     Password=userpassword</property> 

Erreur: Une erreur liée au réseau ou spécifique à une instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou inaccessible. Vérifiez que le nom d'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (Fournisseur: fournisseur TCP, erreur:. 0 - Aucun hôte tel est connu)

<property name="connection.connection_string"> 
     Server=(uatserver\db01),1433; 
     Initial Catalog=dbname; 
     User ID=dbuser; 
     Password=userpassword</property> 

<property name="connection.connection_string"> 
     Server=uatserver\db01,1433; 
     Initial Catalog=dbname; 
     User ID=dbuser; 
     Password=userpassword</property> 

<property name="connection.connection_string"> 
     Server=(uatserver\db01, 1433); 
     Initial Catalog=dbname; 
     User ID=dbuser; 
     Password=userpassword</property> 

C'est la dernière ligne dans le journal:

[27 Jul 2009 18:27] NHibernate.Connection.DriverConnectionProvider 
     [DEBUG] Obtaining IDbConnection from Driver 

Répondre

4

Essayez de changer la partie serveur à:

Server=tcp:(local),12345 

(ou quel que soit le numéro de port). Vous pouvez uniquement spécifier des ports pour les connexions TCP/IP.

+0

@Mitch: tcp certainement la valeur par défaut plutôt que la mémoire partagée ou les canaux nommés lorsqu'ils sont disponibles ? J'ai pensé que ça valait la peine d'être explicite, étant donné que le port ne devrait vraiment être utilisé que sur TCP. @Jeffrey: Quel support? –

+0

Avez-vous vérifié si TCP/IP est activé sur votre serveur SQL? –

+0

Salut Jon, j'ai édité ma question pour être plus précise. – Jeff

1

tente de passer le port sur une propriété séparée, comme suit serveur = 127.0.0.1; Port = 3306

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
<session-factory> 
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
    <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property> 
    <property name="connection.connection_string">Server=127.0.0.1;Port=3306;Database=test;User ID=admin;Password=admin</property> 
    <property name="dialect">NHibernate.Dialect.MySQL5Dialect</property> 
    <property name="hbm2ddl.auto">update</property> 
    <property name="current_session_context_class">web</property> 
    <mapping assembly="WebAppTest" /> 
</session-factory> 
</hibernate-configuration> 
Questions connexes