Gast JWSK Geschrieben 30. Juli 2010 Melden Teilen Geschrieben 30. Juli 2010 Hallöle, bei der Suche nach einer eigenen Lösung via google stieß ich auf diese Seite. Ich bin studentische Hilfskraft und habe die Aufgabe zwei Datenbanken zu vergleichen. Da ich leider kein SQL2000 Fuchs bin brauche ich hier dringend Hilfe. Mein Ziel ist es, die Unterschiede zwischen zwei verschiedenen Datenbanken automatisiert feststellen zu können. Ich möchte bei dieser Überprüfung die Namen der Tabellen erfassen. Außerdem benötige ich die Namen der Collums, sowie den gesetzten Datentyp. Ich stelle mir folgendes vor: Ich suche im SQL Query Analyter entweder eine oder mehrere Systemtabellen die Tabellenstruktur und/oder die Collums enthält. Gibt es solche Tabellen, wenn ja wie heißen diese? Alternativ stelle ich mir vor die Struktur als TXT exportieren zu können und so an die Namen der Tabellen und Collums zu kommen. Ich hoffe es gibt eine kurzfristige Lösung, der eigentliche Lösungsanstatz it das direkte Vergleichen der Tabellen mit dem bloßen Auge. Es handelt sich dummer weise um mehrere hundert Tabellen mit unzähligen Spalten! Danke Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 30. Juli 2010 Melden Teilen Geschrieben 30. Juli 2010 Moin, was genau musst du vergleichen? Ich habe keinen SQL 2000 mehr da (aktuell ist 2008 R2), aber es sollte eine View namens "INFORMATION_SCHEMA.COLUMNS" geben, die dir beim Strukturvergleich hilfreich sein dürfte. SELECT * FROM INFORMATION_SCHEMA.COLUMNS Gruß, Nils Zitieren Link zu diesem Kommentar
Gast JWSK Geschrieben 30. Juli 2010 Melden Teilen Geschrieben 30. Juli 2010 Ja danke, werde ich gleich testen. Ich vergleiche zwei Datenbanken, eine neue saubere Dateinbank mit allen Tabellen etc die Software es benötigt mit einer kaputten Datenbank bei der irgendwelche Diskrepanzen zum Defekt führten. Zitieren Link zu diesem Kommentar
Gast JWSK Geschrieben 4. August 2010 Melden Teilen Geschrieben 4. August 2010 Hallöle, also die Abfrage funktioniert, leider ist der vergleichsaufwand hinterher genau so groß wie bei dem Strukturvergleich OHNE Hilfsmittel. Hat jemand noch eine ergänzende Idee? Wäre für jede Hilfe dankbar! Zitieren Link zu diesem Kommentar
Gast JWSK Geschrieben 4. August 2010 Melden Teilen Geschrieben 4. August 2010 Ich habe jetzt folgende Fehler festgestellt: ich habe nicht Unterschiede in den Columns, sondern in den Indexes (length) sowie in den Views. Hat nicht irgendjemand eine Idee? Ich denke ich gehe ein wenn ich das per Hand erledigen muss. Mal abgesehen davon, dass ich sicher noch Fehler übersehe! Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 4. August 2010 Melden Teilen Geschrieben 4. August 2010 Moin, Indizes kann man einfach neu erstellen. Views im Prinzip auch - das sind ja "nur" logische Objekte, die auf den Datenbestand zugreifen. An der Datenstruktur ändert man damit nichts. Gruß, Nils PS. Du brauchst beim Posten nur Return zu drücken, wenn du einen Absatz machen willst. Bitte die Zeilen nicht künstlich kurz halten. Zudem sind Grußformeln gern gesehen. :) Zitieren Link zu diesem Kommentar
Gast JWSK Geschrieben 4. August 2010 Melden Teilen Geschrieben 4. August 2010 Hallo, sorry für meine unfreundlich wirkende Art, die Grußfloskel habe ich in der Tat vergessen. Umbrüche füge ich stets aus Gewohnheit ein, werde auf diese jetzt größtenteils verzichten. Ich bin jetzt bereits einen Schritt weiter, ich möchte von einer Column den Datentyp ändern. Ich mache folgendes: ALTER TABLE tabellenname modify columnname nvarchar(100) Folgende Fehlermeldung erscheint: Msg 170, Level 15, State 1, Server EBTLSXP, Line 1 Line 1: Incorrect syntax near 'description'. Als SQL Tool nutze ich das Commandshell mit osql Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 4. August 2010 Melden Teilen Geschrieben 4. August 2010 Moin, nicht "modify", sondern "alter column". ALTER TABLE Was immer du da auch machst ... ich denke, die Tabellen sind nicht unterschiedlich?! Und warum machst du das per osql, wenn du auch den Query Analyzer nehmen kannst? Gruß, Nils Zitieren Link zu diesem Kommentar
Gast JWSK Geschrieben 4. August 2010 Melden Teilen Geschrieben 4. August 2010 Moinsen, ich bin ja wie durch ein Wunder einen Schritt weiter, die Vergleiche der Tabellen sind abgehakt, ich installiere jetzt ein Update der Software, gucke welche Fehler auftreten und suche dann manuell den Unterschied um diesen händisch zu beheben. In der funktionierenden Datenbank habe ich nvarchar(100) in der korrupten Datenbank habe ich nvarchar(255). Jetzte möchte ich diesen Datentypunterschied beheben. Folgendes habe ich, dank Deiner Hilfe, zusammengebaut: ALTER TABLE tablename alter column DESCRIPTION nvarchar(100); Hier erscheint wieder eine ander Fehlermeldung: The index 'INDEX_MMITEM_DESC' is dependent on column 'DESCRIPTION'. Msg 4922, Level 16, State 9, Server EBTLSXP, Line 1 ALTER TABLE ALTER COLUMN DESCRIPTION failed because one or more objects access this column. Ich versuche mich ja seit Anbeginn der Aufgabe als unwürdig zu erweisen, aber man besteht darauf, dass es der dumme Student lösen soll ;) weil meine Arbeitszeit nichts kostet Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 4. August 2010 Melden Teilen Geschrieben 4. August 2010 Moin, wenn der bestehende Datentyp nvarchar(255) ist, dann dürfte eine Änderung unnötig sein. Es passen halt 155 mehr Zeichen rein als in die Spalte mit nvarchar(100). Falls die Anwendung nicht mit mehr als 100 Zeichen umgehen kann, kannst du die Änderung natürlcih ausführen. Dazu musst du erst den Index auf der Spalte löschen, welcher das ist, steht in deiner Fehlermeldung. Gruß, Nils Zitieren Link zu diesem Kommentar
Gast JWSK Geschrieben 4. August 2010 Melden Teilen Geschrieben 4. August 2010 Moin, vielen Dank für die Antwort, Schande über mein Haupt das ich echt mal keine Ahnung habe. Ich mache das jetzt mit dem Aufgabensteller zusammen, er hat eingesehen, dass ich genug Zeit verschwedet habe. Trotzdem nochmals für die Antworten, eigentlich hätte ich ja eher in ein N00b Forum gepasst. Gruß JWSK Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 4. August 2010 Melden Teilen Geschrieben 4. August 2010 Moin, ist schon okay. Auf der Ebene in einer Datenbank braucht man schon einiges an Hintergrund, der fehlt dir einfach. Da hat offenbar derjenige, der die Aufgabe zugewiesen hat, das nihct richtig eingeschätzt. Gruß, Nils Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.