title: What mechanisms are used by SQL Server 2008 Mirroring to notify a driver that the primary has failed over?
body: <ul>
  <li><p>I've got a database that is mirrored using SQL 2008 Mirroring.</p></li>
  <li><p>I have a java application, running on Linux, using the Microsoft SQL
  type 4 JDBC drivers.</p></li>
  <li><p>I have this setup duplicated as a QA environment.</p></li>
  <li><p>On my QA environment, when I manually fail over the database,
  providing a successful connection had already been made, the failover
  was completely transparent.  I did not have to implement anything in
  order to get the application to talk to the new Principle (Old
  mirror).</p></li>
  <li><p>In the live environment however, the connections stop working once I
  have manually failed over.</p>
  
  <p>There are quite a few things different between the live and QA environments, but not anything I'd consider fundamental to this process, communication between databases is all very localised in both situations and there are no firewalls (Except the ones built into Windows Server 2008) between my java app and the Windows boxes running SQL 2008.<br>
  Does anyone have any ideas about how I can go about diagnosing this issue?  Or can anyone tell me how this failover transparency occurs so I can work out how to diagnose this myself?</p></li>
  </ul>