T-SQL-Skripte zum Kopieren aller Tabelleneinschränkungen

8

Ich habe viele Tabellen in meiner lokalen Datenbank erstellt und sie in die Produktionsdatenbank verschoben.

Jetzt arbeite ich an der Feinabstimmung der Datenbank und erstellte viele Einschränkungen für meine lokalen Datenbanktabellen wie PK, FK, Standardwerte, Indizes usw. usw.

Nun möchte ich nur diese Einschränkungen in die Produktionsdatenbank kopieren. Gibt es einen Weg, es zu tun?

Beachten Sie, dass meine Produktionsdatenbanktabellen bereits mit einigen Daten gefüllt sind. Also kann ich sie nicht fallen lassen und neu erstellen.

    
user179181 05.10.2009, 18:19
quelle

6 Antworten

16

Wenn Sie keine Werkzeuge kaufen möchten (die ihren Preis absolut wert sind, BTW), können Sie immer die Systemkatalogansichten abfragen und die Informationen von dort extrahieren, um Skripte zu erstellen, die Sie in Ihrer neuen Datenbank ausführen können.

Im Fall von z.B. Diese Abfrage zeigt die Standardeinschränkungen in Ihrer Datenbank an:

%Vor%

und basierend darauf könnten Sie natürlich eine Abfrage erstellen, die T-SQL-Anweisungen ausgibt, um diese Standardeinschränkungen auf Ihrem Zielserver neu zu erstellen:

%Vor%

Sie würden so etwas erhalten (für die AdventureWorks Beispieldatenbank):

%Vor%

Natürlich können Sie das resultierende T-SQL nach Ihren Wünschen anpassen - aber im Prinzip kopieren Sie die Ergebnisse aus der Abfrage in Ihre neue Datenbank und fügen sie dann ein.

Natürlich gibt es ähnliche Systemkatalogsichten für Fremdschlüsselbeziehungen (sys.foreign_keys), Prüfbedingungen (sys.check_constraints), Indizes (sys.indexes und sys.index_columns) und viele mehr.

Es ist ein bisschen Arbeit - aber es kann zu Ihrer eigenen Zeit erledigt werden, und Sie werden dabei viel über SQL Server lernen.

Es ist also immer wieder eine traditionelle "make or buy" Entscheidung: -)

Marc

    
marc_s 05.10.2009 19:19
quelle
3

Der beste Weg wäre, Ihren gesamten DDL-Code in einer Quellcodeverwaltung zu speichern. Dann stellen Sie es mit Tools wie dbGhost (mein Favorit) oder SQL Vergleichen

    
van 05.10.2009 18:30
quelle
2

Red Gate SQL Compare ist eine beliebte, nicht freie Methode, dies zu tun.

    
RedFilter 05.10.2009 18:27
quelle
1

Sicher, das ist ein alter Post, aber keines der Skripte in allen obigen Antworten löscht auch die Tabellenschemata. Also hat es die Box für meine Datenbank nicht geklappt.

Dies tut, also tat es:

%Vor%

Ich habe es von Donabel Santos Blog hier angepasst.

BEARBEITEN und Anmerkung: Stellen Sie sicher, dass beide Teile der Abfrage ausgeführt werden und speichern Sie die zweite Ergebnismenge (dh ADD CONSTRAINT s), bevor Sie die Standardbedingungen löschen Sie können sie nicht erneut erstellen (nein, ich habe das nicht getan:)

    
DaveBoltman 21.01.2016 14:12
quelle
0

Ein gutes und kostenloses Microsoft-Tool. Sie können das Schema und die Daten exportieren.

Microsoft SQL Server-Datenbankveröffentlichungs-Assistent

    
Rodrigo 05.10.2009 22:05
quelle
0

Versuchen Sie DBSourceTools. Ссылка
Es verfügt über eine Schemavergleichsfunktion, mit der Sie ein Aktualisierungsskript erstellen können.
Beachten Sie jedoch, dass Sie die Quellcodeverwaltung für Ihre gesamte Datenbank verwenden sollten.
Dies ist, was DBSourceTools entwickelt wurde, um Entwicklern zu helfen, ihre Datenbanken unter Kontrolle zu bringen.

    
blorkfish 21.07.2010 05:27
quelle

Tags und Links