Die Herausforderung war dieses mal eine (einigermaßen komplexe) Collection von einem TFS 2012 auf eine 2015er-Instanz zu migrieren. Das geht ja recht einfach.

  1. Collection im TFS detachen. (Fehlermeldung ignorieren)
  2. Datenbank im SQL Management Studio detachen.
  3. DB-Files (.MDF und .LDF) auf den neuen Server kopieren.
  4. Datenbank im neuen SQL Server attachen.
  5. Feststellen, dass es wohl schlauer gewesen wäre die Meldung zu lesen.

Da wir nicht als erste in dies Falle tappen, kann uns Google weiterhelfen und führt uns wieder mal zu naked agility. SQL Standard kann keine Kompression, die war aber aktiviert. Die Datenbank also wieder auf dem alten Server anhängen und mittels

EXEC [dbo].[prc_EnablePrefixCompression] @online = 0, @disable = 1

die Kompression deaktivieren.

Das ganze Spiel von vorne - jetzt lässt sich die Datenbank einhängen und danach in der TFS-Konsole auswählen. Das Atachen dauerte jetzt eine ganze Weile (was erst mal ein gutes Zeichen ist). Kurz vor Ende dann die Meldung:

Message: There is already an object named 'prc_InstallDiscussion' in the database.

Und tatsächlich

select * from sys.procedures
where name = 'prc_InstallDiscussion'

spuckt ein Ergebnis aus. Das ist mit einem beherzten drop procedure prc_InstallDiscussion schnell behoben. TFS 2015 Update 2 ist glücklicherweise schlau genug die Migration dort fortzuführen wo das Problem aufgetreten ist. Bald sind wir also wieder an der Stelle und stellen fest:

Message: There is already an object named 'prc_InstallDiscussion' in the database.

Diesmal ist es allerdings nicht die eigentliche Stored Procedure, sondern ein Synonym, das ich nach etwas herumsuchen mittels

select * from sys.objects
where name = 'prc_InstallDiscussion'

finde. Analog zum obigen schafft hier ein drop synonym prc_InstallDiscussion Abhilfe, danach läuft das Attach endlich durch.