NHibernate连接字符串:如何指定端口号和服务器\实例?

NHibernate连接字符串:如何指定端口号和服务器\实例?,nhibernate,configuration,database-connection,Nhibernate,Configuration,Database Connection,我正在用NHibernate 2.1替换我的旧DAL。我的NHibernate配置可以在本地开发机器上运行,但不能在UAT上运行。UAT数据库是在无默认端口上的群集设置。我使用的是标准NHibernate confie文件,类似于以下内容: <?xml version="1.0" ?> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > <session-factory>

我正在用NHibernate 2.1替换我的旧DAL。我的NHibernate配置可以在本地开发机器上运行,但不能在UAT上运行。UAT数据库是在无默认端口上的群集设置。我使用的是标准NHibernate confie文件,类似于以下内容:

<?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>
在NHibernate配置文件中,我尝试了以下组合,没有一个有效,我收到了不同的错误消息,但大多数情况下他们说无法连接

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

尝试将服务器部件更改为:

Server=tcp:(local),12345

(或不管端口号是什么)。您只能为TCP/IP连接指定端口。

尝试在单独的属性上传递端口,如下所示Server=127.0.0.1;端口=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>

NHibernate.Connection.DriverConnectionProvider
NHibernate.Driver.MySqlDataDriver
服务器=127.0.0.1;端口=3306;数据库=测试;用户ID=管理员;密码=管理员
NHibernate.dialogue.mysql5dialogue
更新
网状物

@Mitch:tcp是否绝对是默认的,而不是可用的共享内存或命名管道?我认为这是值得明确的,因为该端口实际上应该只通过TCP使用@Jeffrey:哪个括号?你检查过你的SQL server是否启用了TCP/IP吗?恐怕在这一点上,我建议深入研究源代码。也许NHibernate有一些特殊的逃逸规则。。。
[27 Jul 2009 18:27] NHibernate.Connection.DriverConnectionProvider
        [DEBUG] Obtaining IDbConnection from Driver
Server=tcp:(local),12345
<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>