I've followed the procedure listed below to move mirrored databases to new servers with no downtime:SQL Server References & Abbreviations
CP - Current Principal CM - Current Mirror CW - Current Witness
NP - New Principal NM - New Mirror NW - New Witness
- Make full database backup on CP
- Restore full backup to NP with NORECOVERY option
- Restore full backup to NM with NORECOVERY option
- Make log backup on CP
- Restore log backup to NP with NORECOVERY option
- Restore log backup to NM with NORECOVERY option
- On CP, stop mirroring from CP to CM (ALTER DATABASE ? SET PARTNER OFF)
- On NP, start mirroring from NP to CP (ALTER DATABASE ? SET PARTNER='TCP://CP:9999')
- On CP, start mirroring from CP to NP (ALTER DATABASE ? SET PARTNER='TCP://NP:9999')
- Wait for mirror to synchronize
- On CP, fail over mirror from CP to NP (ALTER DATABASE ? SET PARTNER FAILOVER)
- Wait for mirror to complete failover & synchronize
- On NP, stop mirroring from NP to CP (ALTER DATABASE ? SET PARTNER OFF)
- Make log backup on NP
- Restore log backup on NM with NORECOVERY option
- On NM, start mirroring from NM to NP (ALTER DATABASE ? SET PARTNER='TCP://NP:9999')
- On NP, start mirroring from NP to NM (ALTER DATABASE ? SET PARTNER='TCP://NM:9999')
- On NP, add witness between NP and NW (ALTER DATABASE ? SET WITNESS='TCP://NW:9999')
You'd have to replace "?" with the name of your database(s), and CP, CM, NP, NM with your actual server names, but the outline is sound. I believe the error you received is due to the fact that mirroring was still enabled on the existing principal even though it was not connected. You'll have to run ALTER DATABASE...SET PARTNER OFF on the principal before you can engage the new mirror.