title: Connecting with hibernate to a Microsoft SQL 2008 server
body: <p>I am trying to connect to a Microsoft SQL 2008 server via hibernate.
  The following is my hibernate.cfg.xml file:</p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;hibernate-configuration&gt;
      &lt;session-factory&gt;
          &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.SQLServer2008Dialect&lt;/property&gt;
          &lt;property name="connection.driver_class"&gt;com.microsoft.sqlserver.jdbc.SQLServerDriver&lt;/property&gt;
          &lt;property name="connection.url"&gt;jdbc:sqlserver://127.0.0.1:1433;databaseName=myDBName;instanceName=myInstanceName;&lt;/property&gt;
          &lt;property name="hibernate.connection.username"&gt;user&lt;/property&gt;
          &lt;property name="hibernate.connection.password"&gt;pass&lt;/property&gt;
  
          &lt;mapping resource="Obj.hbm.xml"/&gt;
      &lt;/session-factory&gt;
  &lt;/hibernate-configuration&gt;
  </code></pre>
  
  <p>And here is the code I use to try and establish an connection and do a query :</p>
  
  <pre class="lang-java prettyprint-override"><code>import java.util.List;
  
  import org.hibernate.HibernateException;
  import org.hibernate.Session;
  import org.hibernate.SessionFactory;
  import org.hibernate.cfg.Configuration;
  import org.hibernate.service.ServiceRegistry;
  import org.hibernate.service.ServiceRegistryBuilder;
  
  public class SessionsTest {
      private static SessionFactory sessionFactory;
      private static ServiceRegistry serviceRegistry;
  
      /**
       * @param args
       */
      @SuppressWarnings({ "unchecked"})
      public static void main(String[] args) {
          sessionFactory = configureSessionFactory();
  
          Session session = sessionFactory.openSession();
          session.beginTransaction();
  
          List&lt;Obj&gt; result = (List&lt;Obj&gt;) session.createQuery("FROM Obj").list();
  
          for (Obj obj : result ) {
              System.out.println(obj.getObjID());
          }
  
          session.getTransaction().commit();
          session.close();
  
          if ( sessionFactory != null ) {
              sessionFactory.close();
          }
      }
  
      private static SessionFactory configureSessionFactory() throws HibernateException {
          Configuration config = new Configuration();
          configuration.configure();
          serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();            
          sessionFactory = config.buildSessionFactory(serviceRegistry);
          return sessionFactory;
      }
  }
  </code></pre>
  
  <p>The stacktrace I get :</p>
  
  <pre><code>2013-04-13 15:02:03,449 [main] WARN  org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: 08S01
  2013-04-13 15:02:03,449 [main] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - The TCP/IP connection to the host 127.0.0.1, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".
  Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Could not open connection
      at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:131)
      at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
      at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
      at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
      at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:221)
      at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:157)
      at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67)
      at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:160)
      at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1425)
      at com.test.test.ObjTest.main(ObjTest.java:24)
  Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host 127.0.0.1, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".
      at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
      at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1033)
      at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
      at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
      at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
      at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:204)
      at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:292)
      at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:214)
      ... 5 more
  </code></pre>
  
  <p>I have tried using a different driver(JTDS).
  I have tried changing the URL string in various ways.
  I have tried changing my dialect to org.hibernate.dialect.SQLServerDialect.
  I also tried using windows authentication at one point by adding ;IntegratedSecurity=true to the end of the url string.
  Other than this I have been poking around in the server properties to make sure the the instance I am providing is correct aswell as the port.I have tried : telnet localhost 1433 and can't connect that way,but I can connect using SQL Server Management Studio.
  Further I used NetStat -o in cmd and TaskList /FI "PID eq 4072" /FO LIST /V to try and track down the sql server to confirm the port aswell.The weird thing is I couldn't track down sql server this way.It does not turn up in the NetStat list,but if I use the PID of the server directly it does show details about it except the Status is Unknown,Session# is 0 and User Name is N/A.</p>
  
  <p>I use Hibernate 4.2.0 and SQLJDBC4,when I used JTDS it was 1.2.7.
  The output of java -version :
  java version "1.6.0_30"
  Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
  Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode)</p>
  
  <p>Please tell me if any other info is needed,first time posting here.</p>