hallo,
na da hast du dir etwas vorgenommen
Ein Tool welches das machen kann ist SQL Examiner. Das kannst du dir als Demo evtl. zu Rate ziehen.
Schön ist dass dein Projekt auf MSSQL spezialisiert ist. Hier hast du die Systemtabellen welche dir Informationen über die Struktur der Datenbank geben. Aus dem Kopf SELECT * FROM sys.Tables . wenn du noch etwas googelst findest du noch mehr von den Tabellen, du benötigst noch weitere um dir die Felddatentypen mit den Namen mit rein zu joinen. Als Ergebnis hast du für eine Datenbank eine Liste mit allen Tabellen und deren Feldern mit Datentyp und Felddatentyplänge.
Das könntest du nun als xml speichern. Bedenke dass du zwei/drei unterschiedliche Fälle zum angleichen hast: Feld hinzufügen, Feld ändern, Feld löschen. Du kommst sehr einfach auf die Änderungsskripte wenn du im Management Studio die Erstellung von Änderungsskripten aktivierst und mal bei einer Testtabelle ein Feld hinzufügst, änderst und löscht.
Achtung bei nvarchar und sysname-Felddatentypen. Sysname ist ein Synonym für nvarchar und dein oben erwähntes SQL wird dir das Feld zwei mal anzeigen Hier einfach im WHERE-Teil WHERE Felddatentyp <> 'sysname'
Um sichten zu vergleichen würde ich auf das information schema + view_definition gehen und die CREATE-Statements der Sicht extrahieren. Dabei aber beim vergleichen die Leerzeichen und die Umbrüche entfernen, Kommentare wirst du vermutlich nicht entfernen können, Vergleich ggf. mit Substring da man Text nicht vergleichen kann. Wenn es zwischen den beiden eine Differenz gibt hast du eine Änderung.
@vorherige Poster
Wie ihr auf einen Baum kommt würde mich mal interessieren :cool: Das einzige was Baumähnlich ist ist die Relation (mssql ralationales DB-System) zwischen Tabellenfeld und Felddatentyp. Wenn er das xml auch wieder relational Aufbauen möchte hm naja, ginge aber macht das Sinn? xml hätte den Vorteil man macht Doppelklick drauf und sieht was drinnen ist. Wenn das xml "verschlüsselt" ist weil ich mir um die Daten lesbar zu haben erst joinen müsste verliert es für mich an Charme.
ungelöst ist das umbenennen eines Feldes. Hier hast du ausser Tabelle.Feldname meiner Meinung nach nichts anderes zum Vergleichen.....