NHibernate не подключается к sql server

#c# #.net #sql-server #nhibernate #connection

#c# #.net #sql-server #nhibernate #подключение

Вопрос:

Когда я настраиваю обычное соединение, оно работает, однако, когда я пытаюсь использовать nhibernate, hibernate.cfg.xml я получаю следующую ошибку.

Сообщение=»При установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не был найден или был недоступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: сетевые интерфейсы SQL, ошибка: 26 — Указана ошибка определения местоположения сервера / экземпляра)» Источник=».Поставщик данных Net SqlClient»

В чем может быть причина этого и как я могу ее устранить?

Я сомневаюсь, что это ошибка конфигурации сети или sql server.

 <?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=(ServerNameDEV_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>
  

Комментарии:

1. И что в вашем hibernate.cfg.xml ?

Ответ №1:

Попробуйте подключиться к серверу с помощью той же строки подключения, но с использованием другой технологии доступа к данным, например pure ADO.NET.

Если это также не удается, то это не проблема NHibernate.
Возможно, ваша строка подключения или некоторые настройки SQL server неверны, как указано в сообщении об ошибке:

«Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений».

Комментарии:

1. я перепробовал все это дерьмо, ничего не сработало. я думаю, что гибернация не работает 🙂

2. Что означает «ничего не сработало»? Вы пытались подключиться к базе данных с помощью pure ADO.NET с той же строкой подключения, и сработало ли это? Если нет, то это не может быть проблемой NHibernate.

Ответ №2:

Правильна ли ваша строка подключения?

http://www.connectionstrings.com/sql-server-2005

Комментарии:

1. это выглядит неправильно? это должно быть правильно. и хотя я пробовал другие форматы, все та же фигня.

2. Хорошая ссылка. Для других версий строки подключения SQL Server используйте эту ссылку и выберите свою версию в меню «Подключиться к» справа.

Ответ №3:

Этот формат я использовал более чем для дюжины приложений для SQL SERVER 2005/2008

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

или если вам требуется имя экземпляра

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

замените заполнители заглавными буквами.
Также убедитесь, что вы настроили sql-server так, чтобы разрешать подключения для Sql Server Authentication и не только Windows Authentication .
Проверьте также свой брандмауэр

Комментарии:

1. Спасибо, чувак, я попробовал этот формат, не захотел работать. но ADO.NET работает.

Ответ №4:

Я написал небольшой фрагмент кода в том же приложении, чтобы открыть необработанный ado.net подключение с той же строкой подключения, и это сработало.

Затем я скопировал вставленную строку подключения в файл конфигурации для nhibernate, и он начал работать.

Когда я сравнил исходную строку, выдающую ошибку, и новую строку подключения… Я не мог видеть никакой разницы вообще… понятия не имею, что происходит… совершенно зашел в тупик … в любом случае проблема решена… надеюсь, это кому-то поможет.