Frage

Ich muß manuell geändert gespeicherte Prozeduren von einer DEV SQL Server 2005-Datenbankinstanz auf eine Testinstanz migrieren. Mit Ausnahme der Änderungen, die ich bin migrieren, müssen die Datenbanken das gleiche Schema. Wie kann ich die gespeicherte Prozeduren modifiziert wurde, in der DEV-Datenbank für die Migration auf die Testinstanz schnell identifizieren?

Ich nehme an, ich eine Abfrage für einige der Systemtabellen schreiben kann Datenbankobjekte vom Typ Stored Procedure anzuzeigen, durch eine Art letzten Änderung oder kompilierten Daten sortieren, aber ich bin mir nicht sicher. Vielleicht gibt es eine Art kostenloses Dienstprogramm, kann mir jemand zeigen.

Vielen Dank im Voraus,

Bob

War es hilfreich?

Lösung

anstelle von sysobjects, die nicht mehr empfohlen wird sys.procedures verwenden

select name,create_date,modify_date
from sys.procedures
order by modify_date desc

Sie tun können, die, wo sich Klausel aber das wird es in der Reihenfolge der Änderungsdatum absteigend Liste

Andere Tipps

Bob OMalley gelöst wahrscheinlich sein Problem vor langer Zeit, aber hoffentlich neue Leser werden dies nützlich finden.

Es gibt einige spezielle Fälle, in denen Skripts nicht optimale Ergebnisse geben könnte.

Eine davon ist gespeicherte Prozeduren oder andere Objekte in dev Umgebung zu löschen -. Sie werden dies mit Systemansichten nicht fangen, weil Objekt nicht gibt es nicht mehr

Auch ich bin nicht wirklich sicher, dass dieser Ansatz auf Veränderungen wie Berechtigungen und ähnliche arbeiten kann.

In solchen Fällen seine besten einige Drittanbieter-Tool zu verwenden, einfach nichts zu verdoppeln überprüfen verpasst wird.

habe ich erfolgreich ApexSQL Diff in der Vergangenheit für ähnliche Aufgaben verwendet und es funktionierte wirklich gut Vergleichen Sie auf große Datenbanken mit mehr als 1.000 Objekte, aber Sie können mit SQL nicht schief gehen, dass ist schon hier erwähnt oder im Prinzip jedes andere Werkzeug, das auf dem Markt vorhanden ist.

Disclaimer:. Ich bin nicht mit einem des Anbieter verbunden Ich erwähne hier, aber ich habe beide Satz von Werkzeugen (Apex und RG) in der Firma für die ich arbeite

Sie können diese Abfrage ausführen, alle gespeicherten Prozeduren in der letzten x Tage geändert zu finden:

SELECT name
FROM sys.objects
WHERE type = 'P'
    AND DATEDIFF(D,modify_date, GETDATE()) < X

Obwohl nicht frei ich gute Erfahrung mit Red-Gates- SQL hatte Vergleich Werkzeug . Er arbeitete für mich in der Vergangenheit. Sie haben eine kostenlose Testversion zur Verfügung, die gut genug sein kann Ihr aktuelles Problem zu lösen.

Sie können auch den folgenden Codeausschnitt verwenden

USE AdventureWorks2008;

GO

SELECT SprocName=name, create_date, modify_date

FROM sys.objects

WHERE type = 'P' 

AND name = 'uspUpdateEmployeeHireInfo'

GO

Sie können die folgenden Arten von Abfrage verwenden, um modifizierte gespeicherte Prozeduren finden Sie eine beliebige Zahl verwenden können, dann 7 nach Ihren Bedürfnissen

SELECT name     VON sys.objects     WHERE type = 'P'         UND DATEDIFF (D, modify_date, GETDATE ()) <7

Es gibt mehrere Datenbank-Tools vergleichen gibt. Eines, das ich schon immer gern ist SQLCompare von Red Gate .

Sie können auch versuchen, mit:

SELECT name
FROM sys.objects
WHERE modify_date > @cutoffdate

In SQL 2000, die nicht immer funktioniert hätte, weil ALTER hat das Datum nicht korrekt aktualisiert werden, aber im Jahr 2005 glaube ich, dass Problem behoben ist.

Ich benutze eine SQL-Tool vergleichen mich aber, so kann ich für diese Methode zu 100% nicht bürgen

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