Zum Inhalt springen

Datenbankstruktur als xml speichern


rikkert

Empfohlene Beiträge

Hi,

ich möchte folgendes tun: Ich möchte von MSSQL Datenbanken die Datenbankstrukturen als xml Datei abspeichern, um die Struktur mit der selben DB auf einem anderen Server zu vergleichen, also ob die PKs, Spaltennamen und alles mögliche gleich sind, aber nicht den Inhalt der Tabellen, nur die Struktur.

Außerdem sollen die Views gespeichert und verglichen werden.

Das Problem ist schon das Speichern, ich weiß nicht wie ich die Struktur am besten als xml Datei speichere, kennt da jemand Möglichkeiten?

Ich nutze vb.net

Grüße

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja Datenbank, darunter die Tabellen, darunter die Felder. Das wäre auf jeden Fall eine hierarchische Beziehung. Schlüssel, Attribute / Typen kann man dann ebenfalls als Attribute zu den Feldern speichern oder ggf das ganze gesondert mit einer Art Referenz innerhalb des Baums. Zwei identische Datenbanken würden identische Bäume aufbauen, d.h. der Vergleich auf Identität sollte nicht so schwierig sein

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.....

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Datenbank => Tabelle => Feld => Typ ist eine hierarchische Beziehung, da XML eine Baumstruktur ist, kann man das genauso modellieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...