Donnerstag, 3. April 2008

BizTalk Deployment Probleme

Wer kennts nicht als BizTalk Entwickler? Kaum wird das Projekt mal ein bischen Komplex hakts mit dem Undeployen. Irgendwo in den untiefen des ewigen Internets hab ich dann eine effektive Lösung gefunden.

Some items in the removed assembly are still being used by items not defined in the same assembly, thus removal of the assembly failed. Make sure that items in the assembly you are trying to remove fulfill the following conditions: 1. Pipelines, maps, and schemas are not being used by Send Ports or Receive Locations 2. Roles have no enlisted parties. ... Undeployment failed.

Anstatt ewig zu versuchen, was denn nun blockieren könnte und alles einzeln durchzuprobieren, gibt es einen "Trick"(?) mit der SQL Datenbank, um herauszufinden welche sogenannten Referenzen uns in die Suppe spucken (wobei sich mir durchaus die Frage stellt wieso BizTalk nicht einfach das Ergebnis dieses Selects selber anzeigen kann).

SQL Datenbank... ja aber welche?
Das kann man einfach in der Registry nachsehen unter:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\BizTalk Server\3.0\Administration\MgmtDbServer

Dann den SQL Query Analyzer öffnen mit der Verbindung auf unsere gefundene Datenbank und folgenden großen SELECT absetzen:

   1:  select
   2:  'RcvPort' PortType,
   3:  r.nvcName Port,
   4:  item.name MapName,
   5:  assem.nvcName Assembly,
   6:  nSequence, indoc_docspec_name, outdoc_docspec_name
   7:  from bts_receiveport_transform rt
   8:  inner join bts_receiveport r
   9:  on rt.nReceivePortID = r.nID
  10:  inner join bt_mapspec ms
  11:  on ms.id = rt.uidTransformGUID
  12:  inner join bts_assembly assem
  13:  on ms.assemblyid = assem.nID
  14:  inner join bts_item item
  15:  on ms.itemid = item.id
  16:  --order by Port, nSequence
  17:   
  18:  union
  19:   
  20:  select
  21:  'SendPort' PortType,
  22:  r.nvcName Port,
  23:  item.name MapName,
  24:  assem.nvcName Assembly,
  25:  nSequence, indoc_docspec_name, outdoc_docspec_name
  26:  from bts_sendport_transform rt
  27:  inner join bts_sendport r
  28:  on rt.nSendPortID = r.nID
  29:  inner join bt_mapspec ms
  30:  on ms.id = rt.uidTransformGUID
  31:  inner join bts_assembly assem
  32:  on ms.assemblyid = assem.nID
  33:  inner join bts_item item
  34:  on ms.itemid = item.id
  35:   
  36:  order by PortType, Port, nSequence

Der Result Set ist eine Liste mit noch referenzierenden Objekten.

Keine Kommentare: