Frage

Ich bin auf der Suche nach einem Weg, überprüfen Sie das SQL-schema auf eine Produktions-DB nach einem Update eine version der Anwendung.Wenn die Anwendung nicht mit dem DB-schema-version, es sollte ein Weg sein, um den Benutzer zu warnen und eine Liste der änderungen, die erforderlich sind.

Gibt es ein tool oder ein framework (um programmgesteuert) mit gebaut-in Funktionen zu tun?Oder ist es etwas einfacher Algorithmus zum ausführen dieser Vergleich?

Update: Rote-Tor-Listen "von $395".Alles kostenlos?Oder mehr foolproof als nur halten die version Anzahl?

War es hilfreich?

Lösung

Versuchen Sie, diese SQL.
- Führen Sie es gegen jede Datenbank
. Speichern Sie die Ausgabe in Textdateien
-. - Diff die Textdateien.

/* get list of objects in the database */
SELECT name, 
       type 
FROM  sysobjects
ORDER BY type, name

/* get list of columns in each table / parameters for each stored procedure */
SELECT so.name, 
       so.type, 
       sc.name, 
       sc.number, 
       sc.colid, 
       sc.status, 
       sc.type, 
       sc.length, 
       sc.usertype , 
       sc.scale 
FROM   sysobjects  so , 
       syscolumns  sc 
WHERE  so.id = sc.id 
ORDER BY so.type, so.name, sc.name

/* get definition of each stored procedure */
SELECT so.name, 
       so.type, 
       sc.number, 
       sc.text 
FROM   sysobjects  so , 
       syscomments sc 
WHERE  so.id = sc.id 
ORDER BY so.type, so.name, sc.number 

Andere Tipps

Ich hoffe ich kann helfen - das ist der Artikel, den ich Lesung vorschlagen:

SQL Server-Datenbank-Schema vergleicht automatisch

Es wird beschrieben, wie Sie die SQL Server-Schema Vergleichs- und Synchronisationsprozesse automatisieren können T-SQL, SSMS oder ein Drittanbieter-Tool verwenden.

Sie können es tun programmatisch durch im Datenverzeichnis suchen (sys.objects, sys.columns etc.) beiden Datenbanken und vergleicht sie. Allerdings gibt es auch Tools wie Redgate SQL vergleichen Pro , die dies tun für Sie. Ich habe dies auf jetzt bei einigen Gelegenheiten Data-Warehouse-Systeme für QA als Teil des Werkzeugs angegeben sind, einschließlich der, die ich bin derzeit arbeiten. Auf meinem aktuellen Gig war dies überhaupt kein Problem, da der DBA hier wurden mit bereits.

Die grundlegende Methodik dieser Werkzeuge für die Nutzung ist ein Referenz Skript zu erhalten, der die Datenbank erstellt und halten diese in der Versionskontrolle. Führen Sie das Skript in eine Scratch-Datenbank und vergleichen Sie es mit Ihrem Ziel, die Unterschiede zu sehen. Es wird auch Patch-Skripte generieren, wenn Sie so geneigt fühlen.

Soweit ich weiß, gibt es nichts umsonst, das dies tut, wenn Sie Ihre eigenen wie das Schreiben fühlen. Redgate ist billig genug, dass es auch frei sein könnte. Schon als QA-Tool um zu beweisen, dass die Produktion DB nicht in der Konfiguration ist es gemeint war, um es Ihnen den Kaufpreis nach einem Vorfall speichern.

Sie können nun meine SQL Admin Studio kostenlos nutzen laufen Vergleichen ein Schema , Daten vergleichen und Sync die Änderungen. Benötigt nicht länger einen Lizenzschlüssel Download von hier http://www.simego.com/Products/ SQL-Admin-Studio

Funktioniert auch gegen SQL Azure.

[UPDATE: Ja, ich bin der Autor des obigen Programms, wie es jetzt ist kostenlos Ich will es nur mit der Community teilen]

Wenn Sie ein Werkzeug suchen, der zwei Datenbanken vergleichen und zeigen Ihnen den Unterschied Red Gate macht SQL vergleichen

Sie nicht erwähnt, welche RDMBS Sie verwenden: Wenn die Informationen SCHEMA Ansichten in Ihrem RDBMS verfügbar sind, und wenn Sie beide Schemata aus dem gleichen Host verweisen können, können Sie die Informationen SCHEMA Ansichten abfragen, um zu identifizieren Unterschiede in: -tables -Säulen -Spalte Typen -constraints (z.B. Primärschlüssel, eindeutige Einschränkungen, Fremdschlüssel, usw.)

Ich habe für einen letzten Job genau zu diesem Zweck auf SQL Server eine Reihe von Abfragen geschrieben - es hat gut funktioniert Unterschiede zu identifizieren. Viele der Anfragen wurden unter Verwendung von LEFT JOIN mit IS NULL für das Fehlen von erwarteten Einzelteile zu überprüfen, andere Dinge wie Spaltentypen oder Constraint-Namen wurden verglichen wird.

Es ist ein wenig langweilig, aber es ist möglich.

Ich fand dieses kleine und kostenloses Tool, das die meisten meiner Bedürfnisse passt. http://www.wintestgear.com/products/MSSQLSchemaDiff/MSSQLSchemaDiff.html

Es ist sehr einfach, aber es zeigt Ihnen die Schema-Unterschiede von zwei Datenbanken. Es spielt keine fancy stuff haben wie automatische Skripte erzeugt die Unterschiede zu machen, weg zu gehen und es nicht zu vergleichen, keine Daten.

Es ist nur ein kleines, kostenloses Programm, das Sie Schema Unterschiede zeigt:)

Erstellen Sie eine Tabelle und speichern Sie Ihre Versionsnummer drin. So stellen Sie sicher, dass Sie es bei Bedarf aktualisieren.

CREATE TABLE version (
    version VARCHAR(255) NOT NULL
)
INSERT INTO version VALUES ('v1.0');

Sie können dann überprüfen Sie die Versionsnummer in der Datenbank gespeichert Spielen den Anwendungscode während Ihrer App Setup oder wo auch immer ist bequem.

Welche RDBMS ist das, und wie komplex sind die möglichen Veränderungen?

Vielleicht ist das nur eine Frage der für jede Zeile der Tabelle zählt und Index zählt zu vergleichen - wenn Sie Trigger und Stored Procedure Versionen haben auch zu befürchten, dann müssen Sie etwas mehr industrielle

Versuchen Sie es dbForge Data Compare für SQL Server.Sie können vergleichen und synchronisieren von Datenbanken, sogar sehr große.Schnell, einfach, liefert immer ein korrektes Ergebnis.Versuchen Sie es auf Ihre Datenbank und Kommentar auf die Produkt.

Wir empfehlen Ihnen eine zuverlässige SQL-Vergleichs-tool, dass Ihnen 3 mal schneller im Vergleich und die Synchronisation von Daten der Tabelle in Ihrer SQL Server-Datenbanken.Es ist dbForge Data Compare für SQL Server.

Wichtigsten Vorteile:

  • Schneller Vergleich und die Synchronisation von großen Datenbanken
  • Unterstützung von native SQL Server backups
  • Benutzerdefinierte Zuordnung von Tabellen, Spalten und schemas
  • Mehrere Optionen optimieren-Vergleich und-Synchronisation
  • Generieren, den Vergleich und die Synchronisation Berichte

Plus Kostenlose 30-Tage-Testversion und risikolos kaufen mit 30 Tage Geld-zurück-Garantie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top