2010-03-24 156 views
6

當我建立一個常規的連接,它的工作原理,但是當我嘗試使用nhibernate,hibernate.cfg.xml,我得到以下錯誤。NHibernate沒有連接到SQL服務器

Message =「與SQL Server建立連接時發生網絡相關或實例特定的錯誤。未找到服務器或無法訪問服務器。驗證實例名稱是否正確,並將SQL Server配置爲允許遠程連接(提供者:SQL網絡接口,錯誤:26 - 錯誤定位指定的服務器/實例)。「 來源=」淨SqlClient數據提供程序」

什麼是這種情況的原因以及如何解決。它呢?

我懷疑它是一個網絡或sql服務器配置錯誤。

<?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=(ServerName\DEV_ENV);Initial Catalog=dbName;User Id=SA;Password=PASS</property> 

    <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property> 

    </session-factory> 
</hibernate-configuration> 
+2

什麼是在你的hibernate.cfg.xml? – Paco 2010-03-24 14:22:01

回答

2

嘗試連接到具有相同的連接字符串的服務器,但與其他數據訪問技術,例如純ADO.NET。

如果失敗,那麼它不是一個NHibernate的問題。
也許您的連接字符串或某些SQL服務器設置不正確的,錯誤消息指出:

「驗證實例名稱是否正確,以及SQL Server配置爲允許遠程連接。」

+1

我已經嘗試過所有這些垃圾,沒有任何工作。我想冬眠不工作:) – DarthVader 2010-03-26 14:03:24

+1

什麼是「沒有工作」是什麼意思?您是否嘗試使用相同的連接字符串與純ADO.NET連接到數據庫,並且它工作正常?如果不是,那麼它不能成爲NHibernate的問題。 – 2010-03-26 14:22:47

+0

ADO.NET的作品。休眠不想工作。 – DarthVader 2010-03-26 16:09:39

2

這是我已經使用了十幾個應用程序的SQL Server 2005/2008

data source=COMPUTERNAME;User Id=USERNAME;Password=PASSWORD;database=DATABASENAME 

,或者如果你需要一個實例名稱

data source=COMPUTERNAME\SERVERINSTANCE;User Id=USERNAME;Password=PASSWORD;database=DATABASENAME 

替換佔位符以大寫字母格式。 此外,請確保您已設置sql-server以允許連接Sql Server Authentication而不僅僅是Windows Authentication。 檢查你的防火牆以及

+0

謝謝你,我試過這種格式,不想工作。但ADO.NET的作品。 – DarthVader 2010-03-26 16:10:17

2

我在同一個應用程序中編寫了一小段代碼,用相同的連接字符串打開一個原始的ado.net連接,它工作正常。

然後,我複製粘貼該連接字符串到配置文件nhibernate,它開始工作。

當我比較提供錯誤的原始字符串和新的連接字符串......我看不出有什麼區別......不知道發生了什麼......完全無法解決......反正問題解決了。希望這有助於某人。