2009-06-03 24 views
1

Für eine App, die mein Team entwickelt, habe ich eine Kopie der Datenbank erstellt, um unabhängig von einigen möglichen Funktionen für das System zu arbeiten. Dabei habe ich einige gespeicherte Prozeduren geändert. In der Zwischenzeit arbeiten andere Mitglieder des Teams weiterhin an der anderen Datenbank und ändern einige dieser gespeicherten Prozeduren.Synchronisierte gespeicherte Prozeduren zwischen zwei Datenbanken?

Der Code ruft immer noch dieselben SP-Namen auf, daher muss ich wissen, welche gespeicherten Prozeduren geändert wurden, um die richtigen Korrekturen vorzunehmen. Gibt es eine Möglichkeit, alle gespeicherten Prozeduren von einer Datenbank zu übernehmen und sie mit SPs mit demselben Namen in der anderen Datenbank abzugleichen, um zu sehen, welche sich unterscheiden (neben der Differenz zwischen USES [DB1] und USES [DB2]).

Dank

Antwort

0

Hey alle. Ich habe alle Antworten berücksichtigt und das Herunterladen neuer Software ist für mich keine Option. Nach weiterer Recherche bin ich auf diese Lösung gegangen.

Ich abgefragt beide Datenbanken für eine Liste aller gespeicherten Prozeduren und ihre neuesten Änderungsdatum. Ich habe dann ihr Alter Datum verglichen und manuell auf ihre Quelle geschaut und meine Änderungen vorgenommen. Die Quellcodeverwaltung hätte definitiv dabei geholfen, aber manchmal liegen die Dinge außerhalb meiner Kontrolle.

Der Code, um eine Liste aller meiner SP-Namen zu erhalten und zu ändern, ist wie folgt.

select ROUTINE_NAME, LAST_ALTERED 
from information_schema.routines 
WHERE 
Routine_Type='procedure' 
AND specific_Catalog='DATABASE_NAME' ORDER BY LAST_ALTERED 
1

Aua, das ist etwas, das man früher in Betracht gezogen haben sollte. Ein Ansatz: Entpacken Sie den SP-Code in Dateien und verwenden Sie ein Tool wie Windiff.

Oder wenn Sie es in der Datenbank tun müssen, überprüfen Sie these tools.

In Zukunft sollten Sie Ihre SP-Skripte in die Quellcodeverwaltung einfügen. Sie könnten die Änderungen verzweigen und zusammenführen.

5

Ich würde empfehlen, ein dediziertes Werkzeug zu kaufen (oder nur zu bewerten), um dies zu erreichen. Es gibt eine Reihe von Produkten auf dem Markt, einschließlich: Apex SQL Diff und Redgate SQL Compare

Ich habe für eine Reihe von Jahren Apex SQL Diff verwendet und würde es von ganzem Herzen empfehlen.

+1

Endlich habe ich es geschafft, meinen Chef zu überzeugen, in SQL zu investieren. Dieses Produkt ist ein Lebensretter. – TheTXI

+0

In der Tat RedGate SQL Compare ist ein großartiges Werkzeug! Ich wünschte, ich könnte auch meinen Chef überzeugen ... –

1

Eines der in Visual Studio verfügbaren Funktionen heißt Schema Compare und vergleicht alle Datenbankobjekte wie Tabellen, Ansichten, Sprocs usw. Nicht sicher, ob Ihnen dieses Tool zur Verfügung steht oder nicht.

Ein weiteres Feature ermöglicht es Ihnen, die Daten in den Datenbanken zu vergleichen, die bereits ein Retter war.

0

zu finden, wenn die Dinge sich dies geändert verwenden:

SELECT 
    CONVERT(varchar(23),modify_date,121) AS modify_date 
     ,type_desc 
     ,name 
    FROM sys.objects 
    WHERE is_ms_shipped=0 
    ORDER BY 1 DESC 

es die folgenden Arten von Gegenständen Liste:

CHECK_CONSTRAINT 
DEFAULT_CONSTRAINT 
FOREIGN_KEY_CONSTRAINT 
PRIMARY_KEY_CONSTRAINT 
SQL_SCALAR_FUNCTION 
SQL_STORED_PROCEDURE 
SQL_TABLE_VALUED_FUNCTION 
SQL_TRIGGER 
UNIQUE_CONSTRAINT 
USER_TABLE 
VIEW 

Auch Sie könnten in so etwas wie CVS oder Source aussehen wollen, so Sie können Code ein- und auschecken und Funktionen zum Zusammenführen/Verzweigen verwenden.

Skript alle Datei zu trennen und ein Tool wie Darüber hinaus nutzen den Vergleich (hat eine kostenlose Testversion) http://www.scootersoftware.com/moreinfo.php Es Verzeichnisse vergleichen und ermöglicht es Ihnen, diffs pro Datei zu sehen, mit Merge-Funktionen etc.

+0

Scheint wie eine schreckliche Menge an manueller und langwieriger Arbeit, um dasselbe zu tun, das SQL Compare Tools (siehe andere Posts) sehr einfach und viel zuverlässiger machen kann. –

+0

@marc_s, Ja, diese Tools wären großartig, aber es gibt eine Lernkurve und eine Kosten $. Er hat genau das getan, was ich gesagt habe! –

Verwandte Themen